feat(middleware): introduce concept of middleware

This introduces the concept of middleware.
A middleware handler is registered with
`server.utilize(handler)` where `handler`
is like a regular route handler with the
only difference that it's supposed to return
`true` or `false` to continue or prevent
continuation of other middleware invocation.

Fixes #14