feat(render_prompt): implement end-to-end render_prompt flow
Completes the proof of concept for running BAML builtin code by making
baml.llm.render_prompt work end-to-end. The flow now correctly:
- Calls get_jinja_template to retrieve the template
- Calls get_client_function to get the client's $options function
- Resolves the client definition to get a PrimitiveClient
- Renders the Jinja template with provided arguments
Key changes:
- Remove #[hide] from baml.llm module to make builtins visible to MIR
- Add get_client_function to the builtins macro definition
- Add SysOp::LlmClientDefinitionResolve and handlers
- Fix compile_source_with_schema to detect LLM functions
- Add PromptAst conversion in vm_value_to_external
- Add comprehensive tests for the render_prompt flow