The agent turn loop.
Implements the standard function-calling loop: call the provider; while it
asks for tools, execute them and feed the results back; repeat until the
model ends its turn. Provider streaming chunks are folded into a turn via
[polyc_llm::turn::collect_turn]; the assistant/tool messages are
mapped to wire [Message]s for the control plane.