A bunch of zoom/window changes:
 - Initial zoom should use up half of the "border" area outside the window
 - Min zoom is smallest that allows the entire window to be filled, max is
   3x the min
 - Never allow empty/whitespace inside the window
 - zoom on center of window
 - A bunch of tests

Fixes #1