Fix scenegraph examples

Minor changes to reduce CPU usage in scenegraph examples. 
Also made `viewbox.py` resize with the canvas, and cleaned up `nested_viewbox.py`
Ready for review.
In `Canvas` sometimes we do this:
```
def on_draw(self):
    ...
    self.update()
```
Will this block this kind of self-referential updating (I don't think we want it to)?