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.
Heh, I usually find it's the last thing I try that works with docs. We use `sklearn` doc-building as a backend I think, we should add a link to their docs about how to properly format things. It's possible they just use the `numpy` standard, but I'm not sure.