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.
I'm a little confused about the separation of concerns between a Relier and a Broker. I haven't pushed through all the details like you have, but my initial impression is that a Broker could be structured so that it doesn't need to know anything about the Relier. More broadly:

* A Relier is an abstraction of the relying service.
* A Broker is an abstraction of the delegated authentication protocol (and underlying communication method) the Relier is using to delegate to FxA.

Could these be decoupled entirely, where the magic happens in the view to glue them together?