FIX: support accents in ToUpper/ToLower

As we don't use locale, the unicode version of tupper/tolower only does [a-z] <-> [A-Z] leading to labels like "VARIéS" rather than "VARIÉS" or "L'âGE DE GLACE" rather than "L'ÂGE DE GLACE" in french in uppercase skins.
 
This fixes it by using a static table.

/cc @jmarshallnz 
Seems like something std::algorithm oughta have.  But it doesn't... I have
something here I can tweak.  Gimme a few.