feat(router): enable asynchronous router configuration

A view model that hosts a router may now implement a special bacallback
“configureRouter” which they can use to asynchronously configure a
router. For example, they could call a web service to get the available
routes based on the current user, then they could configure the router
with that. This callback returns a promise for completion of router
configuration.