Add the CTF management code from the demo/volume-sandbox branch

This continues the steady march of pulling in features from the experimental `demo/volume-sandbox` branch. This replaces the save/load context menu actions in the CTF editor with a `CtfManager` class which allows a more user-friendly CTF-wrangling UI to be built.
Right, but `keyfunc` makes it seem more general than it actually is. Most, if not all, of the calls to `PiecewiseFunction` use the first index, but the default key func returns `id(x)`.  Also, other parts of the code (e.g. `set_delta` in editor tools) make the assumption that there's an `(index, value)` pair (in that order).