Redesigned Dispatcher registration

Fixes #922
Added a default dispatcher.

Note that it starts out NULL, and is set to the LocalDispatcher by a config for the gui app
DispatcherWindow now manages its own list of Dispatchers.
Added basic support for RenderMan volume shaders.
Merge pull request #1056 from johnhaddon/volumeShaders

Added basic support for RenderMan volume shaders.
Default dispatcher is just a type now.
Dispatchers now register a function to setup executable plugs.

This replaces the doSetupPlugs virtual function, so we don't need to create Dispatchers when making ExecutableNodes.
Separated adding new dispatchers to the DispatcherWindow from setting the current one.

[ci skip]
Rejigging DispatcherWindow API a bit
Merge pull request #1054 from andrewkaufman/dispatcherRegistry

Redesigned Dispatcher Registration
Updated changes and bumped major version.
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.

Binary incompatibilities :

	- CompoundPlug
		- Removed methods
		- Removed member variable
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.

Binary incompatibilities :

	- CompoundPlug
		- Removed methods
	- ValuePlug
		- settable() no longer virtual
Added tests to check that leaf plugs do not accept children.
Added child matching to connected Plugs.

When a parent plug has an input connection from another parent plug, we now propagate any child addition/removal on the source plug, performing equivalent operations on the destination plug. This allows the connection to be maintained, and will allow compound plug types like CompoundDataPlug to be used effectively in connections.
Added CompoundDataPlug test case demonstrating Box promotion.

Fixes #1043.
Fixed include order in Plug.cpp.
Interleaved Prune hash/compute methods for clarity.

It's a lot easier to verify they're correct as a pair when you can see them side by side.