Greatly Improved bgl/program and bgl/shader