Bring prefix into the router.
Make the three request routing paths explicit.

Requests going through middleware and using Router are one of:

* inside the prefix (or none is supplied) and part of the schema
* inside the prefix (or none is supplied) and not part of the schema
* outside the prefix (when one is supplied)

This changes things up to make it easier to determine which one a
request is. Also adds a Middleware::Base#call which in turn calls
handle if the request is one of the first two kinds. Otherwise
it calls down the middleware stack without touching the request
or response.