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>
IMHO checking for empty is misleading, instead I think we should check if the middleware stack does not include `Rack::Static`. Extending this same point, I think we should reword the line 14 from `it 'includes` to `it 'contains only` and perform a eq check instead of include check