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.

I added this because on Qt, calling QTimer.start() on a timer that is already running causes it to cancel any queued timeout events and schedule the next event for the _next_ event loop run (but if there happens to be another mouse event at that time, then that event will be canceled as well). The result is that if you move the mouse quickly enough, the animation becomes choppy.

There are some potential problems here:
* Should the `start` event be emitted even if the timer is already running?
* Should the `first_emit` and `last_emit` times be updated?
* If the user attempts to dynamically adjust the timer interval at every update, then the problem will still be present.

A possible solution: call `self._timeout()` at the end of `start()`.