Optimised plug dirty propagation.

In the case of plugs which affected multiple outputs, which then themselves affected multiple outputs and so on, we were doing far more work than necessary, because we were not pruning propagation when revisiting a plug via another path. We now build a boost::graph of dirtied plugs, prune duplicate propagation, and use a topological sort at the end to find the appropriate emission order, rather than repeatedly reordering the dirty list during propagation.

This reduces the execution time for the slightly diabolical test case from 17 seconds to practically nothing.
Merge pull request #952 from johnhaddon/dirtyPropagationOptimisation

Optimised plug dirty propagation.
Added SystemCommand executable node.
Set default compiler optimisation level to -O3.

This gives a 15% reduction in runtime for a production test case. I'm not sure why it wasn't -O3 already - it appears to have been -O2 since the beginning.
Fixed SystemCommand type name.
Merge pull request #954 from johnhaddon/systemCommand

Added SystemCommand executable node.
Marked expected test failure unique to Image Engine internal builds.
Fixed failing ParameterisedHolder test cases.

They were relying on an op which is no longer installed with Gaffer.
Merge pull request #962 from johnhaddon/testCleanup

Test cleanup
ExecutableNodes now accept Boxes as requirements inputs and outputs.
Dispatchers accept Boxes for direct dispatching.

Fixes #925.
Addressing comments
Merge pull request #968 from andrewkaufman/boxDispatch

Dispatchers accept Boxes
Added missing includes to manifest.

These are necessary to build Gaffer, so must be included in the dependency package.
Removed unused variables from image libraries.
Clang compatibility fixes.
Renamed Displays plugs and changed keys used to store displays.

- Renamed label -> name. It was strange having a UI term used in a non-UI library.
- Renamed name -> fileName. This is more self explanatory and matches user expectations.
- Used name rather than fileName to distinguish different displays in the globals data.
Added name() method to SceneInspector.Inspector class.

This makes inspectors more self contained, providing all the information needed by the DiffRow class.
Added SceneInspector.DiffColumn class.

This allows the attributes and options sections to share implementation.
Fixed dirty propagation bug in GafferScene.Displays.

Dirtiness wasn't being signalled when adding a new display, only when editing an existing one.