Made some nice progress of defprogram, this is going to be a long
haul to get this all working, much longer than I originally
anticipated but the results should be great.
I have made minor changes to cepl-gl in order to prepare for
making programs. I can't really go much further without being
able to do that.

We can now compile shaders and have any errors changed into lisp
errors we can catch and use to trigger recompiles.

One real issue is that until compile time (of the program) we don't
know what location a uniform will be assigned. This means we need to
query this after linking. This in itself would be fine but the
driver specific implementation of the shader compiler is allowed to
ignore unused uniform variable or parts of uniform structures.
If you try and request the location of these inactive variables
you get an error so we need to look at what is active and store the
offsets of the data that needs to be copied in. This is quite cool
as we can restrict our data transfer to only the variables that
are definately used.

Anyhoo that is in protocode right now, I guess my next commit will be to put it in cepl-gl and start using it.