Merge pull request #1778 from mozilla/issue-1777-fxa-client-sans-relier

refactor(client): FxaClient no longer takes a relier in its constructor.

Everyone is giving it the thumbs up, I'm merging it.
feat(metrics): Add metrics for signup, preverified signup, signin, hide the resend button.

Add:
* signin.success- for a user who signs in successfully.
* signup.preverified - for users who attempt to sign up with a preVerifyToken
* signup.preverified.success- users who successfully sign up with a preVerifyToken
* signup.success - users who successfully initiate a signup.
* oauth.signin.success- for an OAuth user who signs in successfully.
* oauth.signup.preverified - for an OAuth user who attempts to sign up with a preVerifyToken
* oauth.signup.preverified.success- for OAuth users who successfully sign up with a preVerifyToken
* oauth.signup.success - for OAuth users who successfully initiate a signup.
* confirm_reset_password.resend - users who attempt to resend the password reset email.
* confirm_reset_password.too_many_attempts - when we hide the "Resend" button for password reset users who have tried too many attempts.

Also:
* Hook up the debounce code to the password reset.
* Add a base.js->logScreenEvent that logs an event using the screen name as the prefix.
* Change `/` in screen names to `.`
** `screen:legal/tos` => `screen:legal.tos`
** `screen:legal/pp` => `screen:legal.pp`
** `screen:oauth/signup` => `screen:oauth.signup`
** `screen:oauth/signin` => `screen:oauth.signin`

issue #1559
fixes #1147
Merge pull request #1745 from mozilla/issue-1559-metrics-updates

feat(metrics): Add metrics for signup, preverified signup, signin, hide the resend button.

I see this quote: "I'd say it's good to go once rebased." Rebase is done. Merging.
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.
* No longer save forceEmail to Session, get it from the relier.
* Remove the "signIn" from "completeResetPassword" in the FxaClient, this is now done in the views.
* No longer call `signIn` from `changePassword`, let this be handled by the views. This allows the signature of `changePassword` to be much smaller.
* No longer pass a broker to the FxaClient's constructor, pass it in to signIn and signUp directly.
* Move the re-link check to the views that need to do it and out of fxa-client.
* remove Session.forceAuth from fxa-client.js
* Setup the webChannelId in the WebChannelBroker instead of the OAuthRelier.
* Create a search-params mixin in models/mixins.
* Let the broker decide whether to auto submit on the ready screen
* Start to migrate OAuth related finishing code from service-mixin to an OAuthBroker.
* There is no need to call setupOAuth, this can be taken care of when the OAuth based brokers start. Pass in all needed dependencies to the OAuth broker
* Instead of calling persistOAuthParams all over, call self.broker.prepareForEmailVerification right before sending out the email verification stuff.
Really shrink service-mixin to a bare bare minimum, fix the unit tests, make sure all the current functional tests pass.