[WIP] Refactor submap saving

This is the foundation for incremental submap saving/loading.
Don't pull yet, I haven't had a chance to test loading the old save file.