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.

There are several places in the viewport code where it's effect on the canvas and DOM is hardcoded.  Using events instead of such special cases will make it easier to land something like a webgl backend, or support multiple canvas/DOM layers.

Adding setters for the viewport width/height should make it easier to change the game size.  That should partially help with the problem described [here](https://groups.google.com/forum/?fromgroups#!topic/craftyjs/gE1oEqh-pQ0).