ListToolsResult.cache

Draft CacheableResult freshness hint (ttlMs/cacheScope). Round-trips symmetrically: toJson emits it when set and fromJson parses it. The server sets this (draft-gated) so pre-draft wire output is unchanged.

struct ListToolsResult
Nullable!CacheHint cache;