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 ValuePlug to deal with children.

ValuePlug should now be useable in place of CompoundPlug.

NOT YET UPDATED TO REMOVE COMPOUNDPLUG OR TO IMPLEMENT HASH PROPERLY!! FIX ME!!
Fixed leaf plug types to reject all children.
WORKING!! Needs some tidyup.
Added CompoundDataPlug test case demonstrating Box promotion.

Fixes #1043.