feat(oauth): message to native flows
Prepare the OAuth completion logic for multiple channels.

* Remove the @vladikoff's FxWebChannel for now to simplify review. I will add this in a separate PR.
* Create a BaseChannel which is the channel interface, base other Channels off of this.
* Extract the current OAuth redirect code into its own channel named RedirectChannel.
* Add helper functions to service-mixin.js to clarify intentions.
* Upon OAuth completion, display a spinner on the available submit button.
* Upon OAuth completion, if no response is received from the channel within 10 seconds, display an error message.
fix(test): Ensure requirejs configuration is loaded before any other scripts.

In main.js, both require_config and ./lib/app-start are requested at the same time. If app-start is loaded and parsed before require_config, then the shims for underscore and backbone are not defined.

fixes #1478
Channels are now ephemeral, no more storing channels on Session. Mock in some OAuth server interactions.

* Bring the channel factory back. Simplify it's API. The only method is `get`, it takes a `window` as a paramter. All other info is taken from Session.
* Use the channel's `send` interface to determine whether it supports OAuth auto-verification.