Replace generic capability dictionaries with structured types for prompts, resources, tools, and roots. This improves type safety and makes capability features like listChanged and subscribe more explicit in the protocol.
We need a way for servers to pass initialization options to the session. This is the beginning of this.