Reworked how the shader programand vao classes work a little bit.
A bit more verbose, but the intention is that utility functions will perform more 'high level' features.
Also made them default constructable.