Viewport scaling and display density independence

<b>Viewport Scaling</b>
The view is scaled to be as large as possible, without changing the aspect, within the bounds of the window.

<b>Display Density Independence</b>
On "retina" displays, or other displays where window units != pixels, the view should no longer draw incorrectly.

<b>Notes:</b>
* I couldn't test with Qt (on a Mac and not getting the right GL context). I suspect it might not be fixed on high density displays. See in-line comment.
* I originally made these changes on top of #83, so it should be good to go before or after that PR.
I think that pass by pointer or Rect would make more sense, so that it's clear what the order of the width,height pair is. Is that fine, @bunnei?