fix(client): Show the back button for reset_password, even if an email is on the URL query string. Generalize whether the "back" button should be shown.

In `/reset_password`, the `email` query parameter was used as a proxy to indicate whether the user has directly browsed to the page. If the user directly browses to the page, the "back" button should not be shown.

Proxy checks are never a great idea. Instead, use an explicit flag that says whether the user can go back.

Logic:
* The first FxA view displayed cannot go back.
* Subsequent views can go back.

All views that have a back button only show the back button if the user can go back. If the user directly visits a page with a back button, the button will not be shown.

Another considered option:
Check if window.history.length > 1. If so, the user can go back. This was strange if users visited a page with a back button from an external site. A user could click "back" and go back to the previous site, not really expected.

Other work:
* Ensure there are functional tests for the existence/non-existence of the back button on pages that have them.
* Extract the delete_account related tests from settings into its own module.

fixes #1917
feat(metrics): Add the `isMigration` field to the reported metrics.

Only reported for FxDesktop. Sent when the browser is migrating a Sync user.

See https://bugzilla.mozilla.org/show_bug.cgi?id=1100666

fixes #1906
feat(metrics): Add the `campaign` metric.

campaign is used by the Desktop Fx crew to indicate which campaign they are running.

fixes #1792
refactor(storage): instantiate localStorage from a factory

Fixes #1921.
Merge pull request #1923 from mozilla/issue-1921-refactor-localstorage

refactor(storage): instantiate localStorage from a factory

r=ckarlof
Fixes #1921
fix(docs): add Bower usage to CONTRIBUTING
Change `isMigration` to `migration`, expect a string.
refactor(client): Remove oauth_sign_in and oauth_sign_up, their functionality is completely handled by sign_in/sign_up and the brokers.

fixes #1841
Merge pull request #1928 from mozilla/issue-1906-isMigration

feat(metrics): Add the `migration` and `campaign` fields to the reported metrics.

I see two thumbs up, one from @kparlante, the other from @zaach. double r+!
Merge pull request #1927 from mozilla/issue-1917-back-in-reset-password

fix(client): Show the back button for reset_password, even if an email is on the URL query string. Generalize whether the "back" button should be shown.
Merge pull request #1932 from mozilla/issue-1841-remove-oauth-views

refactor(client): Remove oauth_sign_in and oauth_sign_up, their functionality is completely handled by sign_in/sign_up and the brokers.
feat(client): Add the iframe flow.

* window.history.pushState is not available inside of an iframe. When FxA loads in an iframe, fall back to using the hash change event. If in an iframe, copy the pathname to the hash on startup.