Stops infinite recursion and stack overflow
Added GameMap.canMoveTo(), isFree() and isAdjacent() with tests
Removed a tiny bit of redundancy
Added Position.equals() and hashCode()