Fix parsing of language names with scripts

The code for translating human-readable locale names into POSIX-style
codes used icu::Locale::getName(), which creates ICU internal names.
This was incorrect, it could produce names like zh_Hans_CN, as well as
add additional parameters.

Build the code manually from the provided language, country and script
data. Handle the Chinese case specially. Also recognize the Latn script
and translate it into @latin suffix (e.g. sr@latin).

Fixes #100.