Split TileListener and UnitController

The two now work together; the UnitController is managed by the
SquareListener