refactor(client): FxaClient fetches the preVerifyToken from the relier instead of from the view.

fixes #1647
Merge pull request #1772 from mozilla/issue-1647-preverify-token

refactor(client): FxaClient fetches the preVerifyToken from the relier instead of from the view.
refactor(client): FxaClient no longer takes a relier in its constructor.

* Instead of creating the FxaClient with a relier in its constructor, pass a relier instance to the functions that need it.
* Since we had to update any unit test that used fxaClient.signUp to pass in a relier, it was easy to update the tests to no longer touch the server.
* FxaClient.signUp no longer calls .signIn, the view takes care of this.

fixes #1777
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.

Start to split out functionality for beforeSignUpConfirmed, afterSignUpConfirmed, and afterSignUpVerified to simplify flow control.
more tests for the web channel broker
More tests!