[WIP] Json saves

This will make save backwards compatibility much less fragile (no more adding enums all over the place just to add a new terrain or furniture type) at the cost of making saves larger.  If they get out of control we can look into resurrecting one of the compressed saves PRs from the past.

TODO:
Handle loading legacy saves, and move the legacy loading code to savegame_legacy.
Pull out as much of the map.key infrastructure as possible without breaking legacy save loading.
test a bunch.