VarDefs with types, correctly read from game.json and used for engine language

- VarDef types are restricted to string, float, integer and boolean
- VarDef names can be prefixed by '_' to indicate that they are reserved
- VarDef names prefixed by '_g_' are copied to/from subgames ("globals")
- Added I18N initialization in GameController using a LANGUAGE_VAR ("_g_lang")
- Added additional sanity checks to pseudo-properties parsing in i18n