feat(metrics): Add screen width and height to the metrics.

* width reported as `screen.width` in the logs.
* height reported as `screen.height` in the logs.

fixes #1373
refactor(client): Convert jQuery AJAX promises to Promises A+ promises.

jQuery AJAX promises are not Promises A+ compatible and can cause unexpected behavior. Monkey patch p to add a jQueryXHR function, and replace all references to 'p-promise' with 'lib/promise'.

fixes #1406
Merge pull request #1398 from mozilla/issue-1373-screen-size-metric

feat(metrics): Add screen width and height to the metrics.
Merge pull request #1407 from mozilla/issue-1406-jquery-promise

refactor(client): Convert jQuery AJAX promises to Promises A+ promises.
refactor(tos-pp): wrap jquery deferreds on tos/privacy pages
refactor(signin): remove unused signin_complete view
Remove the last remnants of "sign_in" in the "ready" view.
Merge pull request #1416 from mozilla/issue-1414-wrap-jquery-ajax-legal

refactor(tos-pp): wrap jquery deferreds on tos/privacy pages

Beautiful.

@zaach - don't forget to update https://github.com/mozilla/fxa-content-server/pull/1413/files#diff-5869372ee85f1dc309d7305957b51fe8R48 for this change.

r+
Merge pull request #1417 from mozilla/issue-1378-signin-complete

Issue 1378 signin complete

Looks great, thanks @zaach!

r+
fix(fxa-client): remove lang from fxa-client requests

Fixes #1404.
fix(tos-pp): rely on accept headers instead of naviagor.language for partial requests

Fixes #1412.
Merge pull request #1413 from mozilla/issue-1404-remove-lang

Remove `lang` from fxa-client and partial requests

rebased, re-pushed, checked German - looks great. r+
fix(client): Ensure a down OAuth server does not cause an `undefined` error.

Lots of changes under the hood:

* oauth-client.js: Convert jQuery promises to rest of the world promises to ensure compatibility.
* oauth-client.js: Convert server error responses to OAuthError based errors.
* oauth-client.js: Non-reachable OAuth server returns a SERVICE_UNAVAILABLE error
* oauth-errors.js: Add all possible oauth error codes, whether they are used or not.
* service-mixin.js: Work with OAuthError's instead of raw JSON responses.

fixes #1344
fix(client): Display `Service Unavailable` if the user visits `/oauth/sign(in|up)` and the OAuth server is unavailable.

fixes #1399
fix(client): If logError/displayError/displayErrorUnsafe is called without an error, log an `Unexpected Error` & print a stack trace.

* Prevent users from seeing strange errors like "err is undefined"

fixes #1344