Add some brokers

This is for @nchapman, @zaach, @vladikoff and @ckarlof. These are the first brokers, see what you think!

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.
This approach... Part of this doesn't seem right since brokers are a model, part of this makes sense. The views react differently to signin/signup/password reset depending on the context the app is running in. Sometimes the /confirm screen transitions to the /signup_complete screen. Sometimes it doesn't. Having the brokers control this avoids repeated if/else statements all over the place. 

Other approaches considered:
* Create separate views that do the same behavior, but this suffers from an explosion of views.
* Inject a broker created strategy into the views that controls how to complete a given action, this seems more reasonable but I thought it might be overkill.