RFC: Basic Optimizations

I have done some basic optimizations related to the OpenGL state, and specifying a default state so that it does not need to be reasserted for each object's render call. I have checked this against the examples but just to be safe if you get the chance, please check this for some of your own use cases. The default state is specified in each scene and can be overridden by the user if they wish, or reasserted at anytime. State changes in the libraries `BaseObject3D` are returned to default automatically. 

Fixes #99. Fixes #754.