fix(trusted ui) remove our select box background image
Combine CSS declarations for `&.select-focus` and `&:hover`
fix(oauth): validate that redirect param exists.

Fixes #1786
feat(metrics): Add three new auth-errors

* INVALID_RESULT - oauth.1001 - if OAuth result is missing.
* INVALID_RESULT_REDIRECT - oauth.1002 - if OAuth result is available, but is missing redirect field.
* INVALID_RESULT_CODE - oauth.1003 - OAuth code in result's redirect is missing or invalid.
Merge branch 'be-redirect'
fix(client): Fix CORS requests not being decoded for Fx<21

Fx < 21 has a problem where it returns an emtpy string when calling
xhr.getAllResponseHeaders() for CORS requests. jQuery uses the
'Content-Type' header to do smart decoding of content. Since jQuery
cannot get the correct type, it returns JSON content as text, causing the app
to blowup whenever trying use the returned data as an object.

We also have issues where jQuery does not return Promises/A+ compliant promises
from its XHR functionality. We convert between jQuery deferreds and promises on
every request.

Instead of leaving these two problems to be solved on an ad-hoc basis, a simple
xhr wrapper library is created that surfaces the functions we make use of. All
functions return a Promises/A+ compatible promise. The default dataType is set
to JSON if not already specified.

fixes #1786
Merge pull request #1800 from mozilla/issue-1776

fix(trusted ui) remove our select box background image

fixes #1776
Merge pull request #1808 from mozilla/issue-1786-cannot-oauth-signin-fx18

fix(client): Fix CORS requests not being decoded for Fx<21

fixes #1786
r=ckarlof, zaach
fix(oauth): fixes WebChannel double submit during password reset
fix(test): fixes setTimeout tests in FF18

fixes #1817
Merge pull request #1812 from vladikoff/issue-1809-double-submit

fix(oauth): fixes WebChannel double submit during password reset

fixes #1809
r=ckarlof
Merge pull request #1820 from vladikoff/issue-1817

fix(test): fixes setTimeout tests in FF18
Release v0.25.0
feat(test): Add functional test for web channel flow when user signs up, closes original tab, and opens the verification link in the same browser.

This is to add additional coverage to prepare for the add-a-broker branch.

Additional work:
* Reduce duplication in the web channel tests by calling the fillOutSignUp and fillOutSignIn FunctionalHelpers.
Add FunctionalHelpers to fill out the (request) password reset and complete password reset forms.
feat(client): Add some brokers!

* Start to add brokers that know how to startup/complete flows.
* 5 brokers to start, base, oauth, fx-desktop, redirect, web-channel.
* Get rid of the Channels high level abstraction, these are used directly by the brokers if needed.
* Move some code from service-mixin and various channels to brokers.
* Update tests to make use of the brokers.
* No longer save forceEmail to Session, get it from the relier.
* Remove the `signIn` from `completeResetPassword` in the FxaClient, this is now done in the views.
* No longer call `signIn` from `changePassword` in the FxaClient, this is now handled by the views. This allows the signature of `changePassword` to be much smaller.
* Move the re-link check from fxa-client to the views to allow finer grained control over when they are presented.
* Remove Session.forceAuth handling from fxa-client.js, this is now stored in relier.email
* Create a search-params mixin in models/mixins.
* Migrate signin/signup/verification finishing code from service-mixin to the brokers so each broker can do their own thing.
* Really shrink service-mixin to a bare bare minimum, fix the unit tests, make sure all the current functional tests pass.
* Extract a ChannelMixin for use by the brokers.
Rip out lots of functions from the broker that might not be needed.
fix(client): Ensure the Loop initiated reset password verification flow sends OAuth credentials after the reset password is complete when the original tab is closed.

fixes #1825
Merge pull request #1609 from mozilla/add-a-broker

Add some brokers
style(tooltip): wrap tooltip text