WIP: Reactive Visuals

When working with `Canvas`, it is up to the user to call `Canvas.update()` when necessary. When working with a scenegraph, the expectation is that the canvas will redraw automatically (although I am not sure if this is implemented completely).