Use the cost reported by the AI Gateway in instrument_openai and instrument_anthropic
Fixes #2700.
get_usage_attributes now checks the response's usage object for the cost the Logfire AI Gateway reported (usage.logfire_ai_gateway.cost, then the deprecated usage.pydantic_ai_gateway.cost_estimate) and uses it for operation.cost instead of the genai-prices estimate. A reported 0 is treated as a real cost. The response is dumped once up front and the same dump feeds the estimate path, so the existing model_dump call pattern is unchanged.
Both instrument_openai and instrument_anthropic route through get_usage_attributes, so this covers streaming and non-streaming responses for both. The logfire-ai-gateway-cost header isn't read here: the openai and anthropic SDKs keep the gateway's usage block on their parsed responses, and pydantic-ai only needs the header for SDKs that drop it (google-genai, boto3).
Mirrors pydantic-ai's _gateway_cost.py (pydantic/pydantic-ai#7337).
Tests: 5 new cases in test_llm_usage_attributes.py covering string/number/zero costs, the deprecated block, and invalid values falling back to the estimate. pytest tests/otel_integrations/test_llm_usage_attributes.py passes (22 tests); the 4 cost-assertion tests fail on main without the change.