WIP: New visuals

Adding some new visuals in this PR. The first is done: `Grid` draws grid lines inside a ViewBox. It works with nearly any type of coordinate system, and transitions major/minor grid lines smoothly as it scales. Have a peek in the `basics/scene/grid.py` example. Will be adding more over the next couple of days.

This also includes some cleanup of the transform methods in `SceneEvent`. I have picked the following coordinate system names:
* `ndc` refers to normalized device coordinates
* `framebuffer` refers to the current physical pixel / fbo being rendered to
* `canvas` refers to the logical pixel system of the canvas
* `document` refers to the current physical coordinate system (units of pixels, and will define `dpi` for unit conversions)

See https://github.com/lcampagn/vispy/blob/new-visuals/vispy/scene/events.py#L103


Not sure about the name `SurfacePlot`, maybe `SurfaceGrid`? (Most things can be used as some type of plot or another, so having that in the name seems redundant)