This PR adds support for retrieving web search annotations from the OpenAI API, as described in their [web search documentation](https://platform.openai.com/docs/guides/web-search). This allows us to access citation URLs and their context within generated responses when using models like `gpt-4o-search-preview`.
**Changes:**
* Added `annotations` (with `Annotation` and `UrlCitation` records) to `ChatCompletionMessage` in `OpenAiApi.java`.
* Updated `OpenAiChatModel` to populate the `annotations` field (via metadata) for both regular and streaming responses.
* Added integration tests (`webSearchAnnotationsTest`, `streamWebSearchAnnotationsTest`) to `OpenAiChatModelIT.java`.
* Added `GPT_4_O_SEARCH_PREVIEW` and `GPT_4_O_MINI_SEARCH_PREVIEW` to `OpenAiApi.ChatModel`.
* Added `WebSearchOptions` and related records to `OpenAiApi`.
* Minor updates to `ChatCompletionRequest` and its `Builder`.
Resolves#2449
Signed-off-by: Alexandros Pappas <apappascs@gmail.com>