Language tags

* recognise subdomains like "en-us", "pt-br" etc
* allow to create custom mappings, e.g. "us" instead of "en-us" by overriding Locale.mapping