update es_AR translation (Closes #20)
update README.txt, AUTHORS, and linux launcher
small sanity refactoring

For code/g and code/singularity, separate initialization vars from function defs
from initialization function calls.

For setup.py, read version from code/g. A new version bump now requires editing
only code/g.py and README.txt
try to use user environment locale as prefered language

Try user locale as initial language. If the user's xx_XX language is not
among the available game translations, try finding a similar xx_YY
translation before fallbacking to default language. This way, a user's
with a pt_PT locale gets a game translated in pt_BR, es to es_AR, and so on.

This "tolerance" is only allowed for user's locate (like invoking game
as LC_ALL=xx_XX singularity), not preferences file or command-line
'--lang' option. These still require an exact match in available translation
languages' list.

Also, all occurrences of hardcoded en_US replaced for 'default_language',
a first step into making E:S a bit more language-neutral
small bugfuxes and code cleanup: unused vars and imports, bad indents
standardize and generalize def files loading and parsing for main dicts

Functions g.load_xxx_defs() had a very similar pattern for base_types,
locations, events, items and techs. While similar, they had a few
inconsistencies with each other.

Create new generic functions that accomodate all needs of these
functions: load_generic_defs() and load_generic_defs_file(). Besides
uniformity, it also offesrs a few improvements:
- language is optional, default is current language
- missing language files are silently ignored with no errors. Only the
  default language file is mandatory
- always load default language before language, to "clean" any entries
  from previous language that may be not present in current language
- entries in data files with non-matching id in object dict are ignored
- attributes in data files' entries that do not exist in the object
  class are graciously ignored
- attributes of type list (as flavors in base_types and cities in
  locations) that are missing from data files' entries are assigned to a
  a list with a blank element [''], to prevent them from being empty and
  chocking on random.choice() in location.generate_base_name(). This was
  already done for location.cities, but not base_type.flavors

load_strings_defs() behavior does not fit load_generic_defs(), but it
can benefit from the first 3 improvements above, so it directly uses
load_generic_defs_file(). It also requires both default and current
language files as mandatory
new i18n approach fully working for basic usage, add helper tool

It reads files in data/messages_ll_CC.po and populates a new global
messages dict. A few screens and buttons were already i18'zed, like
main menu and main map screen

Current limitations are:
- UI is only translated at import time, restart is required for language
  changes to be fully effective
- location hotkeys don't work properly when language is changed on the fly
  (this was always a bug, but now it is more evident)
- "&" handling for embedded hotkeys is still very rudimentary: no "&&"
  handling yet, and for &x if x is not alpha, it returns 1st char.

A new tool was added: util/gettext-singularity, a gettext tools wrapper
customized for E:S. It automatically uses:
- xgettext : to create an updated data/messages.pot
- msgmerge : to update existing data/messages_ll_CC.dat files
- msginit  : to create a new data/messages_ll_CC.dat if requested

execute util/gettext-singularity --help for more info.

Brazilian Portuguese pt_BR may be used for tests on i18n. Delete
current ~/.endgame/prefs.dat and try:
./singularity --lang=pt_BR
LC_ALL=pt_BR ./singularity
LC_ALL=pt_PT ./singularity
LC_ALL=pt ./singularity
Merge branch 'testing/i18n'