clean up debug output
use native memory for float arrays

the cause of our non-repeatable results was quite possibly GC moving them
around in between one call to GL and the next
check return from glUseProgram
shuffle the order of some fns
expose the scene graph to other threads

having it be write-only made it difficult to find out what bits of it we
wanted to change
compile-glsl-in-graph needs to return a vector

because update-in doesn't work on a cons
comments, whitespace