redirect flow wip
Redirect fixes & cleanup

* set needsPopupFix to true for Chrome for iOS.
* Add two options to the navigator.id.request API:
* allowRedirect - allow the page to redirect if needsPopupFix is true.
* forceRedirect - force the page to redirect in all browsers.
Use sessionStorage instead of localStorage so that multiple windows can be opened at once.
Add Windows Phone to the list of browsers needing the redirect flow
Add Blackberry to the list of devices.
Remove forceRedirect and allowRedirect.
Cleanup of the RP Redirect flow.

* Move sessionStorage related functionality to storage.js under the rpRequest namespace.
* Extract the functionality to start various channels into their own functions.
* Add more tests.
remove direct access to sessionStorage.
Add a warn message if the popup flow is attempted with .get or .getVerifiedEmail
show "requires watch" dialog if .get() used
Add backend tests for unsupported_dialog_without_watch
Prevent the loading screen from being shown on unsupported_dialog_without_watch
That was embarrassing. The last `showLoading: true` should have been false.
Update unsupported_dialog_without_watch.ejs

Rewrote message to focus on user error first, and developer message second.
Slight update to the Unsupported without watch text.
Fix the error in the storage.js test.
Merge pull request #3802 from mozilla/redirect-flow

Redirect flow

fixes #2034