Viewport tests

I'm at another good stopping point for these, so here's another pull request. I'm trying to not put them all in one enormous code review, just for sanity's sake.
This pattern of setting a value (in this case minZoomLevel) on the viewer and then calling open to propagate that value to the viewport works in this version of the code, but once #446 lands, the viewport will be created once per viewer (rather than once per open) and it won't work. One solution would be to actually create a new viewer each time. Another solution would be to modify the viewport's minZoomLevel directly. At any rate, might as well write these tests with the upcoming changes in mind.