feat(client): Smooth out the verification flow.

* The original tab always automatically completes the oauth flow if it is open when the email is verified.
* If a second tab is opened in the same browser, do not show the user a link to continue back to the RP. The user has to return to the first tab. This is a requirement by Marketplace.
* If the user verifies a new account in a second browser, show the service name, but do not allow the user to click back to the RP.
* If the user verifies a password reset in a second browser, force the original tab from the first browser to enter their password to allow the user to complete the flow.

For password reset users who verify in a second tab, we need a way to pass the unwrapBKey/keyFetchToken generated in the new tab to the old tab. localStorage is used as the cross-tab communication mechanism since no reference to the old tab can be obtained. The cross-tab communication is done via a library called crosstab.

fixes #1723