tests(signin): make cached credential tests more stable
Merge pull request #1641 from mozilla/improve-cached-creds-functional-tests-2

tests(signin): make cached credential tests more stable
tests(webdriver): Update Selenium version
refactor(client): Create one FxaClient and one Relier in app start.

* Remove the singleton FxaClient created in views/base.js, instead create one in app-start and pass it via the router to all objects that need it.
* Update assertion.js to use a passed in fxaClient instead of creating its own.
* Update the tests that need to be updated.

Part of issue #1623
Merge pull request #1644 from vladikoff/sel243

tests(webdriver): Update Selenium version
chore(tests): Insert a Relier into each test instance of FxaClient and View
Merge pull request #1645 from mozilla/issue-1623-refactor-fxaclient-relier-creation

refactor(client): Create one FxaClient and one Relier in app start.
refactor(client): denodeify jwcrypto calls to reduce boilerplate.

@zaach - I was trying to figure out how to create signed JWTs and found a feature in P that could help use reduce boilerplate code with node-style callbacks. the P.denodeify function converts node-style callbacks to promise returning functions.
chore(metrics): Namespace errors for metrics logging and other error logging updates.

@kparlante asked for us to add a bit of context, like a screen name, to errors so that it is easier to decide where an error originated. This led down a bit of a rabbit hole of cleaning up the error code.

* The different error types overlap in their errno's, this adds a namespace so that different errors are able to be selected from the metrics logs.

Namespaces used:
* auth-errors.js: 'auth'
* oauth-errors.js: 'oauth'
* profile-client.js: 'profile'

* The `message` field of auth-errors.js.toError was never used, so this is repuprosed to pass in a `context`.
* The format of an error event has changed to accommodate a context: 'error.<context>.<namespace>.<errno>
* When a view's `logError` function is called, the screen name is set as the error's context.
* base.js called metrics.js to fetch ids for screens and errors, then called metrics.js->logEvent. Updated to just call `logError` and `logScreen`
* A couple of TestHelper functions were added: `isScreenLogged` and `isErrorLogged`

fixes #1500
Merge pull request #1653 from mozilla/denodify-in-crypto

refactor(client): denodeify jwcrypto calls to reduce boilerplate.
fix(oauth): increase the assertion lifetime to avoid clock skew issues
Merge pull request #1630 from mozilla/issue-1500-namespace-errors

chore(metrics): Namespace errors for metrics logging and other error logging updates.
Merge pull request #1655 from mozilla/issue-1649-assertion-expiration

fix(oauth): increase the assertion lifetime to avoid clock skew issues

Since the leaf portion of the assertion has the exp time set by the client,
a client with a very "off" clock can produce assertions that are already expired.
Making the exp time "a long time in the future" effectively makes the lifetime
of the assertion  determined by the lifetime of the signed public key
(currently 6hrs), which is an acceptable tradeoff.

r=ckarlof
Fixes #1649
fix(avatars): disable remote URL option
fix(avatars): integrate profile server backend for profile images
Updating to express@3.17.1
fix(errors): use the correct context for error messages

Fixes #1660.

This issue occurred because the context of an error was being discarded as the error was rethrown in the form submission handler. Rather than depend on error context being passed around, we store it on individual error objects.
Merge pull request #1659 from pdehaan/issue-1658-express

chore(build): Updating to express@3.17.1
Pre-merge cleanup

* remove unused deps from base.js.
* remove `errors` parameter in `displayError` calls in views/mixins/service-mixin
Merge pull request #1584 from mozilla/profile-images-backend

fix(avatars): integrate the profile images backend

I give this my r+.