Minor refactoring
Refactor the way tile types are handled. Instead of using enums, a tile now has a single material which is an instance of the TileMaterial base class. So far there are four materials: Road, Wall, Floor and Door. Each material class handles whether it is solid, opaque and which texture to draw. This allows better separation (eg all road stuff is now in a road class) and also allows per-material state to be stored for tiles, eg whether a door is open or closed.