OpenGL 2.1 Compatibility Fixes

This assortment of fixes gets things running reasonably in an OpenGL 2.1 context with appropriate extensions, largely by falling back to simpler behaviour where features aren't available. Not all the test cases pass yet (although many have been fixed), but this is enough to get Gaffer running pretty reasonably in GL 2.