Improvements to backend system for Canvas.
More window stuff is supported. Clear names to indicate what the backend
should make a _vispy_* function do. There is only one getter (geometry).
The rest is all setting stuff or doing an action on the backend widget.
Almost all backend-to-canvas communication occurs through events.
Made canvas.geometry a get+set property.
This kind of gives an idea of what I think would be a very friendly
interface (we got rid of two setter methods in this case.