Level tiles abstraction

- `DungeonLevelMap` finds, instantiates, and discards `Tiles` when needed
- Characters can no longer move on Tiles occupied by another Character (multiple playable characters is functional and fixes #24)