Constructs the shader object by calling glCreateProgram, then compiling each given Source, and finally, linking them together.
Get the program ID for use in OpenGL functions.
Gives access to the uniforms through dot access. `OpenGlShader.Uniform = shader.uniforms.foo; // calls glGetUniformLocation(this, "foo");
Helper method to just compile some shader code and check for errors while you do glCreateShader, etc. on the outside yourself.
Calls glLinkProgram and throws if error a occurs.