lots of minor refactoring

*changed tile_sheet and related classes to a pimpl design
*added a try block to main
*merged tile_type and texture_type
*added some smaller forward declaration headers
*moved more enums over to the new from_hash system