Abstract viewport resizing

Add setters/getters for the viewport, and trigger a "ViewportResize" event.  Use that event to alter the dimensions of the stage and canvas appropriately.