Does not cache states in glGetBoolean calls.
GL_INVALID_VALUE should be generated if shader is not a value generated by OpenGL and
GL_INVALID_OPERATION should be generated if shader is not a shader object.