Lots of refactoring

Need to look at player movement code again. Tile occupation doesn't seem
to be working.