Add Size object to Spatial project.
Fix a compiler error in Size.

Can't write to a read-only property.
Add IsEmpty convenience function to Spatial::Size
Add Spatial::Size version of Spatial::Rect constructor
Add submodule for InfiniMap
Switch to using new infiniMap

Also tidy up the visibility calculator, it was always named LightingMap for some
reason, it's not lighting, that comes later.
Add Bresenham line and Shadowcasting draw algorithms.

* Bresenham
  Draws a line between two points with a anonymous function for user plotting
* ShadowCaster
  Calculates a shadow-map based on opacity of map tiles, two lambdas for
  setting visibility and determining opacity.
Cut out VisibilityMap and lighting.
No-op out the rendering and key processing before further work.
Tidy up the IGameMap interface
Simple container class for 2D lightmaps
Add helper for accessing via a Vec position.
Simplify ICamera and stub out Camera
Finish Camera refactor

Add FromCenter to Rect as a static function.
Update initializer to account for new camera parameters.
Add FOV calculation and simple map access to GameMap
Ignore queries on the LightMap that are outside the screen.
Add OnMove hook to IMobile for tracking entity movement.

Currently used by the Camera to track the Player around the map.
Fix an ordering error in creating GameMap.

Also setup the camera to bind to the player.
Add indexers to the IGameMap interface.

Add a version taking a Vec directly as well.
Unstub ProcessKey.