- lots of refactoring
- changed architecture of the opengl wrapper, such that we can avoid re-binding shaders, textures, and materials (not really binding these in the material class...) if they are already bound