added test cases for plug caching behaviour at scene root

A problem was recently discovered where if an attributes plug was pulled on at the scene root, all subsequent pulls would incorrectly return an empty compound object. These tests illustrate that problem, and a couple of related issues
Fixes for new SceneNode test cases

Previously, SceneNode::compute would be special cased for the scene root, but these special cases would not be reflected in SceneNode::hash, leading to caching problems. The solution is to hash the default plug values for the special cased plugs at the root. The hash for a transform at the root is maybe a bit odd at the moment, but I'll put it in as a placeholder.
modified SceneTestCase.assertSceneHashesNotEqual to ignore cases where hashes are automatically equal
AlembicSource::hash change to fix test cases

Replaced AlembicSource::hash with hashBound, hashTransform and hashObject, as directly overriding the hash method was causing unexpected behaviour at the root
Implemented setPlug on a SectionedCompoundDataPlugValueWidget

This is so it can be promoted to a Box without the UI going grey
stopped standard graph layout reconnecting invisible nodes
Added const enabledPlug() method to dependency node binding

The method's absence was making python overrides of enabledPlug() inaccessible in certain situations
python binding for ValuePlug.setValue()
Fixed missing shader nodules.

Because we removed the parameters CompoundPlug AcceptsInput flag, the nodule creation was being skipped. We now make nodules for plugs even if they don't accept inputs - this makes sense in the shader case where the child plugs do accept inputs, but also in the case that the plug is an output. If any UIs were relying on the old behaviour, they will now need to register a null Nodule creator - the ReferenceUI change here provides an example of this.
Merge pull request #609 from davidsminor/dependencyNodeEnabledPlugPythonFix

Added const enabledPlug() method to dependency node binding
Merge pull request #603 from davidsminor/plugPromotionUIFixes

implemented setPlug on a SectionedCompoundDataPlugValueWidget
Merge pull request #610 from davidsminor/valuePlugSetFromBinding

python binding for ValuePlug.setValue()
Merge pull request #583 from davidsminor/graphLayoutReconnectionFix

stopped standard graph layout reconnecting invisible nodes
Fixed NodeGraph framing bug.

It was framing every time a node was moved. This was happening because I moved the dropSignal connection from self to __gadgetWidget in the recent rejig "for consistency". But because the GadgetWidget generates drags for moving nodes, but doesn't handle drops, we were ending up with drops which we didn't want.
Merge pull request #611 from johnhaddon/shaderNoduleFix

Fixed missing shader nodules.
Merge pull request #612 from johnhaddon/nodeGraphFramingBug

Fixed NodeGraph framing bug.
Misc improvements

* started versioning doc releases - they follow the app release version
* changed modifier key styling in doc content to match that used in interface
* NodeEditor content expanded
* NodeGraph content expanded
* new images
* new screen grab setups
* simplified example light
Merge pull request #613 from bentoogood/docsWIP2

Recent changes to documentation
Adds a few of my startup files that may be useful in future

For future reference, these could be placed in $HOME/gaffer/startup/gui for gaffer to pick up on start

* displays.py
** just basic example of adding some default aovs to the Displays presets list
* exportRibs.py
** example of looping over frames and writing out ribs for selected RendeManRender node
* setupScreenGrabSession.py
** most handy - is used to export python cmdsfile for use with screengrab app. that file will help recreate the current layout,
selection, etc
Reverted "Allowed PathFilter paths plug to receive inputs."

This change was badly thought out - because plugSet() is being used to compute the PathMatcher it can't possibly work without some more thought. Probably an internal plug which stores PathMatcherData computed from the input paths would do the trick.