More efficient RAM usage

This basically does the same thing as the previous commit. There is only one difference:

Main.tile is now simply a direct 2D array of Tile structs, keeping the old field syntax as before (e.g., Main.tile[x, y].type). Since this *will* still cause incompatibilities I recommend ticking the API version.