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


Generally you don't need to set the document at all; let the scenegraph handle it. But here's an example to illustrate where this might be used:

![anticipation1](https://cloud.githubusercontent.com/assets/940580/3995396/35d95d8a-2927-11e4-80f4-2017ee8f6718.png)

This is a screenshot from an SVG editor application. The large 'Text' is an item being edited, and the smaller texts just show the coordinates and size of the item. When you zoom in/out, the large text item will become larger/smaller on the screen (including the width of its outline), whereas the smaller texts will remain the same size, as will the handles and the line width of the bounding rectangle.

The smaller texts use the default document--if they are specified as 9pt, that means 9pt _on screen_ .The large text uses the internal scene of the ViewBox as its document (this must be set manually), so if we set its size to 9pt as well, that means 9pt _relative to the scene_.