feat(client): Add some brokers!

* Start to add brokers that know how to startup/complete flows.
* 3 brokers to start, fx-desktop, redirect, web-channel.
* Get rid of the Channels high level abstraction, these are used directly by the brokers if needed.
* Move some code from service-mixin and various channels to brokers.
* Update tests to make use of the brokers.
* No longer save forceEmail to Session, get it from the relier.
* Remove the `signIn` from `completeResetPassword` in the FxaClient, this is now done in the views.
* No longer call `signIn` from `changePassword` in the FxaClient, this is now handled by the views. This allows the signature of `changePassword` to be much smaller.
* Move the re-link check from fxa-client to the views to allow finer grained control over when they are presented.
* Remove Session.forceAuth handling from fxa-client.js, this is now stored in relier.email
* Create a search-params mixin in models/mixins.
* Migrate signin/signup/verification finishing code from service-mixin to the brokers so each broker can do their own thing.
* Really shrink service-mixin to a bare bare minimum, fix the unit tests, make sure all the current functional tests pass.
* Extract a ChannelMixin for use by the brokers.