refactor(client): Prepare for multiple channels.

* Channels are now ephemeral, no more storing channels on Session.
* Create a BaseChannel which is the root of all other Channels.
* Extract the current OAuth redirect code into its own channel named RedirectChannel.

* Use the channel's `send` interface to determine whether it supports OAuth auto-verification.
* Upon OAuth completion, display a spinner on the available submit button.
* Upon OAuth completion, if no response is received from the channel within 10 seconds, display an error message.

* Mock in some OAuth server interactions to allow for more unit test coverage.
* Remove the @vladikoff's FxWebChannel for now to simplify review. I will add this in a separate PR.