Camera now manages it's own OpenGL program object