An implementation for B2G to ask allow users to log in even if
Persona has not verified that the user owns the email address.

Starts with navigator.id.request({ allowUnverified: true });
When the assertion is returned to the RP, and if they are using
the Persona verifier, must be sure to include an allowUnverified=true
parameter to the verifier, otherwise it will be rejected.

Behind the scenes, when the dialog tries to stage the user, instead
the user is created immediately, an email is added in our email table,
and a stagedEmail token is created and send to the user. When
allowUnverified is true, our wsapi will also check for a staged email/pass,
and use that to allow the user to login.

(merged from commit ebe21f3e3fc9bb80f65f694b359e377ddfad64a0)

(cherry-pick from commit bc4ac912df1e8899c954f75ece6727f1309acab6)

Conflicts:
	example/rp/index.html
	resources/static/dialog/js/misc/helpers.js
	resources/static/dialog/js/misc/state.js
	resources/static/dialog/js/modules/dialog.js
unverified email now adds passwd to user row

this makes things a whole lot simpler underneath

(merged from commit 427052a8f908bc02344f021c85e60c19675fef6e)
fixing cef_logger.alert, and INSERT INTO user
(cherry-picked from 98f9e06930531b6199f7edd42870c5eba4eec994)
I think a recent merge removed these forceIssuer pieces
(Cherry-picked commit 56624d2320235b5418f18856b807c1f4de52f79f)
email inserted in mysql should be `unverified`
(Cherry-picked commit 270aad40591bfb659ab24ab4dfa4db0f73a86462)
The verifier service should be explicit about unverified email in its output
(cherry-picked commit a81a55b9d8e323f6fcad25ecd966d1d8735526fb)
authenticate with unverified email and allowUnverified

fixes #2902

(Cherry-picked commit 3c32c43e0ef7c0a4543237ac320b088f47f22cf2)
Conflicts:
	resources/static/dialog/js/modules/authenticate.js

(Cherry-picked commit 438a80e3e3c91d6ee05628de5dc07cbde87c3941)
Conflicts:
	resources/static/dialog/js/misc/state.js
	resources/static/dialog/js/modules/authenticate.js
send a confirmation email instead of newUser email

since a user is already being created, newUser is the wrong email to
send

(Cherry-picked commit 06f94c3e2f695a9c6274ff4f52f631537a54d198)
remove unverified certs once an email is verified

fixes #2924

(Cherry-picked commit d308c0d176521124a8cac754279e10a6cb915859)

(Cherry-picked commit 97f242f64924c96e55c8908405cafab1c7959dfa)
Conflicts:
	resources/static/common/js/user.js
mark password reseted emails as verified

if an email is not verified, and the user goes through the
reset password flow, then the email really should be verified.

fixes #2925

(Cherry-picked commit 06721c3483d0c474aa4af6b5c2bad5d5714a4738)

Conflicts:
	lib/db/mysql.js
removing duplicate emailInfo (wut)
(Cherry-picked commit 73cd47c1ca93cf94a93e06dd00f285fd20aad33e)
tests for verifying email after password reset

(Cherry-picked commit 649302b4bc8ea8e9fa9612d7ff2f77eb6c63f579)

Conflicts:
	tests/unverified-email-test.js
make JSON db delete old staged rows
(Cherry-picked commit b9a64140c3c6cbb4fbe99c44f611ee2e8d8dd895)
added function call accidentally dropped in commit c0707ddf
Fixing errors introduced in merge in commit c0707ddf

(Cherry-picked from bd4bdf4b2ca11e77d5d4c4be2583ab82f3bbf764)
Conflicts:
	resources/static/pages/js/forgot.js
Removed password param in reset password test (see commit 3c04102e)
Move the allowUnverified code from network.js to user.js

Update tests. Add a test for network.js->certKey
Change allowUnverified to _experimental_allowUnverified when calling request.
Move addressInfo cache update for unverified users from dialog/js/helpers.js to user.js
Get the tests passing again (back & front)!

cleanup.