This patch implements the concept of shader objects. They represent
the GLSL model where we can have programs and shaders.
The added concept is useful when cache_client needs to verify if the
program was generated by OpenGL or when the program value is not a valid
program object.