Refactored CompoundEditor for ease of maintenance.

Moved much of the tab management code from the CompoundEditor into the internal _TabbedContainer class where it makes most sense. Also ditched the _TargetButton class which was having to do half its
work by constantly referring to the parent TabbedContainer. Hopefully this makes the code a bit easier to work with as we start to address various new feature requests.
Added shift+drag of node to panel to create duplicate editor.

Fixes #575.
Merge pull request #581 from johnhaddon/shiftDragToNewEditor

Shift drag to new editor