WIP: GLSL function composition

Basically adds two files: the new Function implementation and a file with examples and tests. High level users should mostly checkout the docstring of the Function class, and the examples in test_function.py.

Everything works (or should, I hope to add a test or two). I think the only remaining issue is that I am not sure yet how variables should work out. 

No need to wait for me to move this forward. If I don't like what you've done with it, I'll nag and we can re-discuss afterwards ;)

Ah nice!

> Since this needs to triage the variable to be a uniform or attribute, then we should create a wrapper function to take care of this in vispy.color...?

Mmm. I suspect this triage is quite specific to the Visual, but maybe if ColorArray already does some checking, we can deduce exactly what we need, or perhaps give ColorArray a special flag for this need.