ENH: Better backend treatment

Moving toward what @rougier called "unity". This PR does the following:

1. backend.available use (instead of ImportError)
2. canvas gl configuration (stereo, double buffer, etc.)
3. context sharing (all backends except GLUT)
4. fullscreen, no decorator, no resize support (all backends except GLUT)
5. enumerating backend capability
6. Throw an error if a user tries to use a non-existent capability
7. Polling current `gl` capabilities
8. Implement `sdl2` backend

Ready for review.