Simplify camera / viewbox system

This proposal simplifies control over sub-scene transforms by introducing a new `Viewer` class that is a helper to ViewBox that manages `viewbox.scene.transform` and handles user interaction. This results in several simplifications:

* `SubScene` loses most of its code
* No need for `PixelCamera`, `UnitCamera`
* Removed `SceneEvent.resolution`
* `ViewBox` / `SubScene` transform handling is much simpler because `Viewer` is not an Entity

Cameras are still supported via the `CameraViewer` class, but this is not fully implemented yet. 
I have only updated the `scene/grid` example, others will follow after initial review.
 
When I think of `rect` I think of `(x, y, w, h)` not `((x, y), (w, h))` since that's how it is in most other plotting programs / packages I've used. WDYT about changing it to this? The syntax here would be very similar as `(-1, -1) + (2, 2)` or `(-1, -1, 2, 2)` in that case.