Man this is coming along well! This commit sees the following:

* Function better than symbolicate-package called symb-package which
  does the same thing in tidier code.

* Added generic function definitions for primitive types. This
  includes dpopulate, gl-pull and the vertex-attrib-assigner

* made substantial improvements to the gl-assign-attrib-pointers
  generic for struct types

* got rid of old redundant code

* Lots of effort going into the make-vao functions, these MIGHT be
  nearly done but all need testing. To test I need shader programs
  hence the work mentioned below

* Started writing the defprogram macro and assosiated functions.
  This includes the rolling-translate which uses the out vars of
  a preious shader as the in-vars for the next. (works great!)

(defprogram test ((a :vec3) &uniform (b :int))
       (:vertex (varjo::out c (+ (aref a 0) b)))
       (:fragment c))

 --------- Becomes ---------
#version 330

layout(location=0) in vec3 A;

uniform int B;

out float c;
void main() {
    c = (A[0] + B);
}

   --- and ---
#version 330

layout(location=0) in float C;

uniform int B;

void main() {
    C;
}

---- Thats bloody great! (even with the littel bugs there)