Allow configuration of the Middleware stack

Move the functionality of `Lotus::Middleware` from the application to a
configuration block to allow users to configure the middleware stack.
When the application is loaded, `Lotus::Middleware#load!` will still get
called to load the final middleware stack into the Rack::Builder app
that wraps the router.

Closes #27.

Signed-off-by: David Celis <me@davidcel.is>
This shouldn't be exposed because of information escape. The main purpose of `Middleware` is to encapsulate this state and provide an API to manipulate it. I've seen that some tests are failing if we remove this.

I suggest to reopen this class in `test/test_helper.rb`:

```ruby
Lotus::Middleware.class_eval { attr_reader :stack }
```