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.
> The negative part is generating an assertion depends on the assertionLibrary, which takes an FxaClient. FxaClient takes a broker. There would be a circular dependency unless we get creative?

The non-trivial refactor proposed [here](https://github.com/mozilla/fxa-content-server/pull/1609#issuecomment-59135884) should remove that circular dep (as well as make the code cleaner). 

This logic definitely seems at home in the OAuth brokers. It's a concern of the delegated auth protocol after all. :)