program is now copyable/movable
cleaning up gl::program by getting rid of array_spec
refactoring the world entity management and world view management