Initial Map Objects

This is the initial code for the Map objects. Making it cleaner to work with. Made the code in TileMap much more behaved, and less reliant on on-the-fly maps.