Added a set_language FFL function

Also refactored code in graphical_font, i18n and main to make this easier.

Test by evaluating e.g. set_language("fr"), set_language("zh_CN") in
the debugger.

Currently switching between any non-English language any number of times
works. However, attempting to switch back to English with
set_language("en") or "en_US" makes most of the text appear empty.
Starting the game in English still works.

Another bug is that dialog text doesn't change language until entering
a new level.
Fixed problem with switching to English language
Allow set_language("system") to auto-detect language again
Added a language preference

There's a new preference field "locale", which stores the language
to use. The default value "system" means automatic detection of the
system language. The set_language FFL function sets this preference
so its change will persist.

If locale has an "invalid" value, the game will display English as
it can't find an .mo file for that language.
Added language selection dialog (ugly)

Need to fix:
  Layout of the pause game dialog
  Layout of the language dialog
  Missing characters for the label "Chinese"
Fixed pause game dialog appearance
Improved language menu layout
Use English for the Simplified Chinese label

As a temporary solution since the latin font does not contain
characters for the Chinese name of the language
Added characters for language names to generated fonts

So that the game can display "Français" when running Chinese, for
example.