## Goal
Support running an MCP server in the same process as the client, while preserving MCP abstractions.
## Details
1. **(core change)** Adds a new `memory` transport module that enables in-process client-server communication.
This includes:
- `create_client_server_memory_streams()` to create bidirectional memory streams
- `create_connected_server_and_client_session()` to establish an in-process client-server connection
3. (minor) Enhances error handling and timeout support:
- Adds configurable read timeouts to sessions via `read_timeout_seconds` parameter
- Improves exception handling in the server with a new `raise_exceptions` flag to control whether errors are returned to clients or raised directly
- Ensures proper cleanup of request context tokens in error cases
4. (minor) Makes server improvements:
- Adds built-in ping handler support
The request and notification method were defined as str but later
overwritten in subclasses with literals. This causes a
reportIncompatibleVariableOverride issue. We need to make method
generic.