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

The example you provided has one issue--it contains no reference to `vert_code`.

The absolute simplest we could make this is `frag_code['color'] = 'attribute vec3 a_color'`, but then we need to know 1) that `frag_code` belongs to a fragment shader, and thus cannot possibly contain an attribute, and 2) that `vert_code` is the main function for the associated vertex shader. I think we could make both of these happen..