Part of #391
Problem
LlmConfig.provider is a String matched against "ollama", "claude", etc. in multiple match arms. Typos fall silently to error branches with no compile-time exhaustiveness.
File: crates/zeph-core/src/config/types.rs line 60
Proposed Solution
Define enum ProviderKind { Ollama, Claude, OpenAi, Candle, Compatible(String), Orchestrator, Router } with #[serde(rename_all = "lowercase")].
Priority: P2 | Effort: Small