**Description:**
1. PyKite now supports middleware for customizing request and response processing.
2. Middleware can be used for tasks like authentication, authorization, logging, caching, and more.
3. A base BaseMiddleware class is provided as a starting point for creating custom middleware.
**Usage:**
1. Create a custom middleware class that extends BaseMiddleware.
2. Implement the process_request and process_response methods to define your middleware's logic.
3. Register the middleware with the PyKite application.