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>
We should verify this with an integration test and see if lazy loading of application's middleware is possible.

For instance:

```ruby
module Bookshelf
  class Application < Lotus::Application
    configure do
      middleware.use Bookshelf::ARackMiddleware
    end
  end
end
```

The design of `configure` has lazy loading in mind, for this reason is a block which is evaluated later. Now, we should test this in order to prevent regressions. If Ruby doesn't complain we're ok, otherwise we should also make `#use` to accept strings and load the constant later on when `#load!` is invoked.

```ruby
middleware.use 'Rack::MethodOverride'
```

..and

```ruby
    def load!(application)
      @builder = ::Rack::Builder.new
      @stack.each { |m| @builder.use(load_constant(*m)) }
      @builder.run application.routes

      self
    end

```