feat(client): shared reqwest client host with retry stack and Retry-After
- src/client/http_client.rs: SharedHttpClient (ArcSwap rebuild-and-swap
hot-reload), HttpClientConfig/ClientCertConfig, HttpClientBuildError
- src/client/retry_after.rs: inlined RetryAfterMiddleware — 429/503
Retry-After (seconds + HTTP-date), bounded URL->deadline storage with
earliest-deadline eviction, sleep-before-next-request
- middleware stack: RetryTransientMiddleware (exponential backoff) +
RetryAfterMiddleware; credentials stay per-request via
OperationContext.capabilities (no env reads)
- applied poisoned-lock recovery convention (into_inner)
Verified: cargo test (95 lib tests), clippy -D warnings, fmt.