Rework of shader system

Allows meshes to only need to interface with a shader program, instead
of shaders directly.