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
Remove the new oauth error strings.

* Remove the new strings until we have a better plan of how to handle non-user friendly strings. No reason to cause the l10n team to translate unnecessarily.
Merge branch 'issue-1344-undefined-errors'