More refinement of zooming.

* All zooming coordinates are in normalized device coordinates
* The ZoomStack no longer carries a reference to the Zoomable or has a type param
* All transforms happen during rendering.
* We no longer need to stack the override functions, which should help with performance on deep zooms