Redirect flow

Adds a redirect flow for browsers that don't support the dialog flow. Most notably: Chrome for iOS and Windows Phone IE. The RP has no control over whether this can happen, to keep the experience consistent for all users.

This flow only works with the `watch()` API. Without it, after being redirected, the user would still not be logged in. An `unsupported_dialog_without_watch` screen will be shown on these browsers if `navigator.id.get()` is used. The wording could probably use some help.

fixes #2034 :beers: