Shader system

Kind of still work in progress. See comments in programlib_phong.js. But usable.
It's totally the same behaviour as before. Original code had:
transform = transform || new pc.Mat4();

I changed to
transform = transform || new pc.Vec4();