LocaleUtils: account for .split() misbehaviour, and fix parsing bug

Whatever the input string is, more than two underscores spell an illegal locale.
And that includes "___".

Now, thanks to this commit and its parent (SHA1
a55bd49a1d575390ae19e20ae5598580d261d8fa), we can safely detect these corner
cases whereas .split(0) on "___" will return 0 (wrong!), .split(-1) will return
4 (correct!). And we do not need to test anymore for a zero array length: the
only way this can happen now is the empty string, and we already return
Locale.ROT for that.