Refactored some code
Added tests for Direction.getOpposite() and Movement.isPull()