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 ;)

`ColorArray` can help with some of the type checking, so you can do:
```
self._color_var.value = ColorArray(color).rgba
```
Or so. `ColorArray` should be able to do all the type checking you need, and if it doesn't, we should be able to fix it or otherwise subclass it.

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`...?