Ownership Semantics Changes

ProgramInterfaces no longer share ownership of the OpenGLProgram that
they target. A valid OpenGLProgram is now required.