Added function to gl_retained_object_manager that deal with managing shader programs, refactored some of the private functions of the object manager to dry out the code.