Having programs cache shared between painters would allow us to create more than one painter without worrying about shaders recompilation.
This change introduces GL.h with error check wrappers for all the OpenGL functions we used so far. For now, the error check is simply: `VERIFY(glGetError() == GL_NO_ERROR);` but that is better than continuing execution after encounting an error.
Instead of recompiling shaders on each paint command call we can compile them once.