Fix some potential null reference errors

Program should no longer crash
when trying to interact with the map view
when no map is open.
Make minimap logic follow MVP pattern

IMinimapService has gone since this is no longer needed.
Viewport state is all held in the model now.
Add Vector2D class to Geometry
Change Rectangle2D to center and extents representation