Shift drag to new editor

This allows users to easily create new pinned editors by shift+middle-mouse dragging a node onto an existing editor. The editor will be copied and then have the node pinned into it.

Also did some refactoring work on CompoundEditor to make it easier to extend - it's not all the way there yet but it's in a better shape for beginning to add the various things we have tickets for.