Problem
OpenAI provider sends plain text. OpenAI API supports function calling with tool_calls.
Solution
- Serialize ToolDef → OpenAI function format
- Parse tool_calls from response choices
- Return ChatResponse::ToolUse
- supports_tool_use() returns true
Acceptance Criteria
Part of #253 (M20)