better middleware loading

I had this problem that I wanted to check something in redis to know if
I should push middlewares or not, but the async stuff got into my way
and the proxy request was actually served before redis replied, so here
is a new implementation.

Each path that the user declare as a middleware should now export a
function with 4 parameters:

1. the worker instance
2. the request
3. the middleware stack
4. a callback to call when you're finished

This allow for checking things and stuff, and only process down the
modules paths when you're finished. The ultimate middleware
(`proxy.proxyRequest`) is automatically added at the end of the stack.