More functional Viewports

Viewport can draw itself and respond to changes in view volume/area.
Good enough to start working on game logic - first step is drawing the
map/terrain.