ShaderProgram now deletes the old program when reloading a new one