Magnify

Just a fun demo, although I could conceive of some real-world uses.

Questions:
* Should the transform classes be moved to `scene.transforms.nonlinear`, or should they live here in the demo?
* This implements camera subclasses as a way to insert the transform at exactly the correct spot in the scenegraph (it needs to be added to the beginning of `viewbox.scene.transform`, which is set by the camera). Would it make sense to just add an option to the base camera class that allows addition of any arbitrary transforms so that subclassing is not necessary here?

Notes:
* Use mouse wheel to change the lens magnification
* This is not a post-processing gimmick; the magnification is implemented as a nonlinear transform. 
* There is a bit of noise apparent in the grid line and image; this should be corrected by adding multisampling to those visuals.

In any case we should determine how we want the timer to behave exactly and then make it work consistently for all backends.

Can we solve the problem with the choppy behavior further up? Like not call `timer.start()` if not necessary?

All this seems complicated enough to warrant a new issue/PR.