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