Added unit test for Plug::removeOutputs().
Allowed Plug to accept children.

It was always strange that Plug didn't accept children, but that CompoundPlug then reaccepted them - the rule is that a derived class can be more strict than a base class, but not less so.

Plug now also does all the parent/child connection management that CompoundPlug was doing, and can do so without signal/slot management because it is in direct control in the setInput() calls themselves.

The Plug class can now be used directly wherever a container of plugs is needed, whereas before it was only possible to use a CompoundPlug for this, whether or not the client actually wanted all the ValuePlug semantics associated with that.
Updated Plug serialisation to account for children.
Updated ValuePlug to deal with children.

ValuePlug should now be useable in place of CompoundPlug, and CompoundPlug will be removed entirely in a future version.
Added tests to check that leaf plugs do not accept children.
WORKING!! Needs some tidyup.
Added CompoundDataPlug test case demonstrating Box promotion.

Fixes #1043.