Implement WebGL

This implements a WebGL backend as described in issue #XXX.


- Works with Color and Sprite components; doesn't work for Image or Text.
- Better docs to come
- Doesn't currently have any tests; hard to test WebGL directly in our automated tests because phantomJS doesn't support it.