some changes to framebuffer to make it easier to subclass, which is more relevant in OpenGL 3.2 since you can have multiple draw buffers and other such fanciness.