refactor(client): Extract channel creation logic, rename channels, and simplify the Oauth completion logic.

* Appease jscs and jshint
* Extract all channel creation logic into lib/channels/factory.js
* Rename the WebChannel to FirefoxWebChannel
* Simplify service-mixin by checking whether a channel has a completeOAuth function. If it does, the channel knows what to do with the OAuth result and can complete the transaction. If the function returns a promise, it is asynchronous.
* Add completeOAuth to the FirefoxWeb channel.
* Create a 'web' channel that redirects after oauth completion.
* in service-mixin.js, Do NOT submit the form from context because context is called for each translation and could cause multiple submissions. Instead call submit from afterRender.

* rename fx-desktop.js -> fx_desktop.js
* rename web.js-> fx_web.js