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.
This is kind of magic. Why `(0.0, 1.0)`?