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

In my mind examples do at least two important things. First, they provide code that one can copy-paste-modify to build useful code of their own. Second, they can help a user understand what functions are available, and *why* they're useful. I'm not sure which camp this example sits in, but my guess is that it's both.

It would be helpful for users unfamiliar with this functionality to see a sort of minimum example of why it is useful (i.e., serve the second purpose above). The longer the code snippet, the more likely someone will be scared off by the amount they'd need to understand. It would also be useful to have a GLSL example (probably with some duplicate code) that someone might naively write in one file, paired with the Function-based nicer code in another. This would make learning and understanding by comparison easier.

For each of these convenient layers we build on top of `gloo` (which is already a layer on top of `OpenGL`, albeit a fairly transparent one), it would be good to have such simple examples. Once the scenegraph is working, we might consider adding an example that starts from raw `PyOpenGL` and uses as many of our layers as possible to arrive at a far simpler/cleaner solution. But that would certainly be for a different PR :)