Split MapRenderer into Map and MapRenderer class

The Map class is designed to only load maps. The MapRenderer does all the other stuff except from loading the map.

Also the Map class uses a vector for the layers instead of pointers for each layer. This allows having an arbitrary number of layers in a map.