middleware support
Request for feature: middlewares, much like other frameworks do them. The basic principle is:

You have a chain of handler instances, each responding to a method that takes, at the very least, the request, a way to respond to the request, and the next handler as parameters.

They are called in sequence; each handler is responsible for calling into the next one. This results in a nested call chain, and allows each registered handler to:
- stop propagating the request and return data to the client - for example, to keep auth&auth in one place, or to add api/request throttling
- modify the request or environment (for example, handle content-type and transform the body data from/to json, and handle errors pertaining to that transparent to the framework user)

And many more usecases. A good search term for more information and examples would be "rack middleware".
