* spun most of the complexity from defprogram into different macros
  and functions
* glambda now is what creates gpu programs.
* defprogram creates a defun which creates a glambda on first use and
  memoizes it. This WILL be replaced with something better
* All of the above has been cleaned up. It's not perfect but definatly
  better
* allowed make-gpu-stream-from-gpu-arrays to take its length from the
  arrays passed in. It takes the shortest of the arrays and uses that
  if no length specified.
* made the shader type mandatory for make-shader... it is mandatory in
  opengl so it must be for this too.
* still playing with examples. they are in no fit state yet but they
  provide a great source of bugs for me to fix.
* removed some old cruft