Update supported locales, error if default_locale is invalid (bug 109237)

https://bugzilla.mozilla.org/show_bug.cgi?id=1092379

Like #37, but keeping the `canonicalize()` function to accept invalid locales that we can fix, since they exist in the wild and are automatically corrected by zamboni now.
I deliberately put a few extra tests because it wasn't really obvious what was accepted and what wasn't, and what was supposed to be accepted and what wasn't. If we ever need to make modifications to this, it will faily loudly and it will be a little tedious to correct, but we'll know exactly what's wrong.