Add CachedInventory to build tool/resource/prompt definitions once at
startup rather than per-request. This is particularly useful for the
remote server pattern where a new server instance is created per request.
Key features:
- InitInventoryCache(t) initializes the cache once at startup
- InitInventoryCacheWithExtras(t, tools, resources, prompts) allows
injecting additional items (e.g., remote-only Copilot tools)
- CachedInventoryBuilder() returns a builder with pre-cached definitions
- Per-request configuration (read-only, toolsets, feature flags) still works
- Thread-safe via sync.Once
- Backward compatible: NewInventory(t) still works without caching
This addresses the performance concern raised in go-sdk PR #685 at a
higher level by caching the entire []ServerTool slice rather than
individual schemas.
Related: https://github.com/modelcontextprotocol/go-sdk/pull/685