Epic: #1975
OpenAI and Claude providers both implement context_window() with long match arms
for known model prefixes. Extract a shared lookup table.
pub(crate) fn known_context_window(provider: &str, model: &str) -> Option<usize>
Locations: openai/mod.rs:369, claude/mod.rs:770
Acceptance Criteria:
Complexity: Small | Effort: 1h
Ref: DRY-07