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.
Looks like this is used for lookup. Probably makes sense to make it a `set`.