PhasedRouter - initial implementation
PhasedRouter: pass errors to phase middleware
lib/application: use PhasedRouter by default

Use `PhasedRouter` as the default application router.

Add `app.phase` delegating to `router.phase`, this allows developers
to register middleware with arbitrary phase:

    app.phase('init').use(compress());