v0.2.0 — preemptive IBKR pacing + transparent disk caching

Three-tier preemptive rate-limit gate (historical / market_data /
orders) wired into every IBKR-bound operation. Soft cap → WARN log,
hard cap → 429 RATE_LIMIT_NEAR. Defaults sit BELOW IBKR's documented
hard caps to leave headroom.

Transparent disk caching for every endpoint that returns historical /
quasi-static / piggyback-snapshottable data:

- cache_bars: /rates + /ticks per-(class, symbol, timeframe) CSV
  (wickworks-shaped: time,open,high,low,close,tickVolume; epoch sec).
  Append-only. Builds long-term goldmine of market data.
- cache_meta: long-TTL JSON for contract details, futures expiries,
  chain strike lists.
- historian: live-snapshot piggyback on /tick (bid/ask/last + Greeks
  for options) + /chain (per-strike rows per snapshot).
- exec_history: append-only JSONL ledger for fills + completed orders.

All caches mount the host's ./data directory; back it up. Caches OFF
in tests, ON by default in prod via config.yaml.

49 new tests, 142 total green. ruff + bandit + audit all clean.

Generated clients import paths:
  Go:     github.com/psyb0t/ibkr-httpapi/pkg/clients/go
  Python: pip install "git+https://github.com/psyb0t/ibkr-httpapi.git@v0.2.0#subdirectory=pkg/clients/python/ibkr-httpapi-client"