added ability to pass in custom middleware to app-handler

The middleware gets resolved in reverse, so currently it's not possible to add middleware that depends on any noir middleware, such as `noir.session` to the `app-handler`. 

This allows passing in custom middleware that will be wrapped before any of the standard middleware.