Handle Window Resizing Gracefully

Currently the window contents are being stretched or compressed whenever the user resizes their window.

We need to make sure that the back buffer is re-created, and that the UI elements remain affixed (ie. centered elements are centered), and relative elements are correctly offset from the affixed ones.

Use 800x600 as the minimum resolution, under which the window will not be resized.