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


If `self._color` is constructed using `Color` (if singleton) or `ColorArray` (if multiple colors), you get nice type-checking and `np.float32` output for free with `ColorArray.rgba`. But maybe I'm misunderstanding how/what this is used for...