Started moving Courier specific functionality from Worker. First step is to make the relevant methods and variables protected in Worker and expose them through Courier
Move the deliverToTarget(Building) method to Courier and remove the implementation in Worker
Moved setTargetRoad() to Courier
Moved getTargetRoad() to Courier and updated GameLogic to handle this
Moved pickUpCargoForRoad and pickUpCargoFromFlag to Courier
Moved setAssignedRoad to Courier
Moved getAssignedRoad() to Courier
Moved putDownCargo() to Courier
Finished moving putDownCargo() to Courier
Moved (get|set)TargetFlag() to Courier and updated TestTransportation to use setTargetBuilding() instead for Military
Moved setTargetFlag() implementation to Courier
Moved implementation of getTargetFlag() to Courier and updated GameLogic to use getTarget() and GameMap.getBuildingAtPoint(Point)
Moved targetRoad and targetFlag variables to Courier
Made target and position variables in Worker private
Made carriedCargo and targetBuilding variables in Worker private
Code cleanups in Worker
Changed Courier to use a proper state machine and added tests for the courier in TestCourier. Updated existing tests to work with the corrected behavior
Remove GameMap.assignCourierToRoad() since the courier handles this itself now. Updated the tests to not call assignCourierToRoad()
Removed GameLogic.assignTravelingWorkersThatHaveArrived() since each worker handles this itself when it arrives
Removed Courier.setTargetFlag() and Courier.getTargetFlag() and all uses of them