The map system is now much more modular and robust

Each class has been separated into it's own header/source pair. In
addition, each class's function is well defined:

* Map handles several MapLayers
* MapLayer handles a 2D matrix of MapTiles
* MapTile handles the tile data
* Tileset renders the tile matrix to the screen

Each of the Map* classes have hooks for the Tileset class, otherwise it's
a well defined hierarchy.

Map still needs to be able to insert and delete layers, and the Tileset's
rendering loop needs to be optimized to _not_ draw tiles outside of the
screen.