Completely rewrote MapInfo (again)

Also rewrote GameState to use enums instead of indirection (manual not auto
indirection), for both GameState itself, and Weapon type (and now the name of
weapons is stored as a &'static str, because it's not like I'll use anything
but &'statics, and it's cheaper than Strings)