async-data and router.flipSwitch

now the router's state doesn't change until the
developer renders the RootHandler, which allows
them to wait for data or whatever before rendering
again and have things like ActiveRouteHandler
still look up the previous stuff, then when they
render RootHandler again, everything updates to
the match we just made

obviously this code needs to be thought out more,
but this satisfies the constraints