Refactoring how things are configured.

Ultimate, the goal is to move from a middleware-oriented configuration to
a route-oriented configuration. In other words, instead of configuring the
stats middleware, then the caching middle and then the upstream middleware,
you'll instead configure a route and all its middlewares.

This makes it simpler to see what's going on with a specific route.
building the foundation to make routes-specific configuration clean and easy(ish) to implement
With the reworking of configuratin setup, route configuration no longer
needs to be done in two separate steps. "compiling" the routes can now be
done as they are added.

Also, changed the way overrides are specified into a specific Override method
to make things consistent.
caching middleware is working on the new configuration approach
dispatcher is using the new configuration format
Context only knows about RequestIn (which is now called just Request).

RequestOut is only a concern of the upstram middleware now.

Also, fixed a bug with trying to return a nil saint response
dispatcher and caching tests are back up and running
fixes all the tests