Flexible route handler return types

This is still very much a work in progress, but it may be useful in it's current form if you agree that it's a good trade of ergonomics vs complexity.

Using a `RequestHandler` trait, and then doing a default implementation allowing the return type for routes to be anything implementing `ResponseFinalizer`.
Defaults are provided to make current code not break, and some neat ones are added to provide common defaults. (See examples.rs or preferably the macro example which benefits more).

I also shuffled a number of files related to the router around, it shouldn't break external code though. It should only break code that implemented `HttpRouter` due to signature change.