Continuing tutorial development
Add structure base class. Doors are now structures rather than materials. Materials are now the stateless contents of a tile such as wooden wall or road surface. Structures are for objects that can be interacted with and hold state, eg doors.
Add support for saving and restoring the map from disk. Had to get this out of the way before creating the tutorial level as the tutorial should be a scenario which is loaded from disk. Some changes were needed to support serialization. Whether a tile has been seen by the player is now stored in the tile instead of a separate list. Materials are now stateless and there are no individual classes for each material. A MaterialInfo class has been added to obtain information about a given material. This has simplified things a lot and also makes it easier to serialize tile contents. Most things are serialized now. Things that aren't included are pointlights other than the player's flashlight. Sound maps and current weapon are not saved yet either. World state such as time of day isn't yet saved.