Add router wide middleware using justinas/alice

This adds support for a router wide chain(list of middleware handlers) using [alice](https://github.com/justinas/alice).

Currently it's very easy to use alice to have middleware with any router on a per route level but you can't have a router wide chain without repeating yourself everywhere. If you want to learn more about alice I suggest you read the creators [blog post](http://justinas.org/alice-painless-middleware-chaining-for-go/) for a good explaination of how it works.