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.
There still seem to be a lot of tests for this. It tests invalid default locales like `"asdf"`, `"en_US"` and `"pt_BR"` along with different combinations of valid or invalid locales. It just seems a little overkill and tedious to correct if there are changes.