Run existing tests in the browser

The existing tests were not written using Mocha's async support. This PR makes them async and uses expect.js to run them in the browser.

This is surfacing some issues in the browser which I yet don't understand. If someone can take a look at them, it'd be very much appreciated.
I'm removing this use of `this.locale`. It's used to default to a global `locale` variable, but it's not documented anywhere. It should be left to be undefined so that the global Intl knows to use its own default. What do you think?