refactor program/shader/DRY into separate Glsl.Program class

Hello,

very nice library and nice idea !
I would like to use it for some 2D image processing but I require a specific vertex shader (for some warping), and sometimes 2 fragment shaders (2 gl programs).
I refactored the glsl.js code to put program / shaders / DRY stuff into a separate Glsl.Program class, so that I can instantiate it directly (instead of Glsl) with a different vertex shader.
Code is otherwise unchanged.
If you think this could be compatible with what you want for glsl.js , here is my work.