Begin merge with Master

Incorporate changes from Master excluding multiple airports, and
propagate architectural changes made with tweaks as required .

FlightPlan:
-removed inefficient/redundant origin_name, destination_name properties
+removed from constructor parameters
-added origin, destination Waypoints
+added getOrigin()

Aircraft:
-modified constructor
+removed redundant name_destination, name_origin parameters
+merged optimisations/bugfixes from Master branch
-removed isOutOfAirspaceBounds()
+cannot be solved without knowledge of size of Airspace, and only
reference was by GameWindow
+moved to GameWindow where this can be solved
+made RADIUS public to enable this calculation
-removed isMouseOver() with no parameters
+cannot be known since ccoordinate system is defined outside of the
class
+cannot convert mouse position to meaningful value
-updated drawCompass()
+explicitly requires normalised parameters for mouse

Airport:
-constructor takes position as parameters
+also calculates other positions and saves them
-modified isWithinArrivals(), isWithinDepartures()
+no longer tries to incorporate offsets into calculations
+assumes all coordinates it is passed are from (0,0)
-removed redundant EventHandler interface
+use the trigger methods instead

GameOver:
-incorporate changes to Aircraft

GameWindow:
-adjusts Airport for scale
-added isOutOfAirspaceBounds() to replace
Aircraft.isOutOfAirspaceBounds()
-fixed drawMap()
+background image drawn at (0,0) because viewport has been set up before
call