Mapping Overhauled!

In this update I completely rewrote the map system to accommodate future
plans. It now references copies of tiles rather than having an instance
of a tile for every map space. There is a map handler class which
maintains and handles calls to the various 2d array locations that make
up the map. It caches pygame draw information in a separate map subclass
to limit calls to objects. This improved performance dramatically. I
also added lighting "effects."