Rework tileset definitions to be immutable and more natural
Some cleanup and minor tweaks to TileRenderer