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.
IMO, `forceAuth` seems to be a property of the broker rather than relier. It's true the relier is asking it, but it is asking it via the delegated authentication protocol that broker is abstracting. Is this the only reason the broker has a handle to the relier?