This PR adds the initial groundwork for invoking tools in response to
tool uses from the model.
Tool uses are run when the model responds with a `stop_reason` of
`tool_use`.
Currently the tool results are just inserted as text into the user
message. We'll want to include these as `tool_result` content on the
message, but Claude seems to understand it regardless.
Release Notes:
- N/A