Implemented Texture3D class
Include Texture3D throughout shader.py, program.py and variable.py
Minor changes to textures.py
A bit of clean-up
Added testing for 3D textures
fixed Texture3D and added simple gradient example
Almar's fixes to Texture3D - glextTexImage3D and glextTexSubImage3D renamed glTexImage3D and glTexSubImage3D
glsl-function: wip
glsl-function: with name mangling
function-glsl: more work
Incorporating new ideas from discussion on gitter. Also some
cleaning
glsl-function: tests!
Add support for linking functions and checking changed

By linking a vertex and fragment shader the share a namespace.
This should also provide a good basis for handling varyings.

Function objects now have an ischanged() method to see whether
anything has changed (since a given time, or since the last time
it was compiled).
Enabling setting varyings with just two lines.
scene-function: get rid of new() method
scene-function: docs and small fix
scene-function: few more tests
flakify
scene-function: constant -> const

Also Variablevtype is public.
Also fixes to gloo.Program when shader source is changed.
scene-function: varyings and gl_Variables assignment

These now work just as template assignment. And one can do:

    code[varying] = X
    code[varying] -> X
scene-function: Do not set dirty if setting same expression

Also allow subsequent setting of template vars