Refactoring the tile system, moving logic out to tile classes
Refactoring and reimplementing tile behaviour