Reorganize map management and preview generation

* Map enumeration and the (previously global static) preview generation have moved into a new MapCache class that lives on ModData.
* Map previews are now batched into sheets, instead of using one texture per map.
* UI map access is now wrapped inside a MapPreview object. MapPreview supports multiple states (available, unavailable, and the next pr will introduce downloadable), and these can be updated dynamically without requiring any action by the code using them.
* Cleans up some other code in replays/server browser/map chooser that got in my way.

This gives us support for custom map previews (see screenshot), and lays most of the foundations for future resource website integration.

![preview](https://f.cloud.github.com/assets/167819/2429517/1310ea60-ac87-11e3-930b-b0ddfe194569.png)