Add support for OpenRouter's reasoning tokens feature to ChatCompletionRequest.
This allows models like Grok and Claude to use reasoning/thinking tokens for
improved decision making.
- Add ReasoningEffort enum (low/medium/high)
- Add ReasoningMode enum for mutual exclusivity between effort and max_tokens
- Add Reasoning struct with optional mode, exclude, and enabled fields
- Update ChatCompletionRequest with optional reasoning field
- Add builder method support for reasoning parameter
- Include comprehensive unit tests for serialization/deserialization
- Add example demonstrating usage with OpenRouter