Pipes an LLM through an output parser, optionally wrapping the result
to include the raw LLM response alongside the parsed output.
When includeRaw is true, returns { raw: BaseMessage, parsed: RunOutput }.
If parsing fails, parsed falls back to null.