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.
Needs a comment explaining as to where black borders will appear (which is what happens if I understand this correctly) - top and bottom or left and right?