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 
Can't you just use std::lower_bound() ? If it's a sorted array, it should do the trick.  Note that it returns the position to insert if it doesn't find it, rather than the last value.  And make sure if it does return the last 'iterator' that you don't dereference it.