Merge router and async router.

Also separate a router handling strategy into a separate mixin.
docs: fix custom link recipe
Make Environment navigable
NavigatableMixin: now how restricted interface and can work outside of router at all
Link now can be forced to operate in global context

Use `global` prop to force `Link` component to operate in a global context:

    <Link global href="/">home</Link>

This way its href won't be scoped to a contextual router (if any) and it would
navigate directly on a global context level.