Add SceneCanvas.screenshot method

Just a start. It implements the ability to render any portion of the canvas at any resolution. 
This is also a good test to ensure that visuals are correctly handling the doc / framebuffer / ndc coordinate systems.

To do:
* [ ] Automatic tiled rendering for very high resolution
* [x] Disentangle logic between `render` and `screenshot` to avoid warning messages.
I don't really see the point. The pyplot interface is clunky, old, but it remains alive because people don't like to change their habits. This is why matplotlib has a pyplot interface. Vispy aims at being a modern library, so I don't think we should create yet another pyplot implementation. Those who want pyplot can just install matplotlib and use `vispy.mpl_plot`.

I see `vispy.plot` as a modern, user-friendly, high-level plotting interface. If we start to worry about copying pyplot, this interface is doomed...