Rewrite the CTF editor

* This new design will allow for new types of function nodes that can contribute one or more values to the final function.
* Additionally, function nodes which control both color opacity and should now be possible.

For ease of review, you probably should ignore the diff. I've basically rewritten everything... Yeah. Sorry.
`ctf_editor.function.updated` won't do it?