Bits and bobs of progress towards manipulators

This just contains some more support work for making transform manipulators - it contains just the stable parts of my branch where I do have something working very hackily on top. I'd like to get these bits merged just so stop my branch diverging too far, and because they might be useful API additions for other work...