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
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.
Added support for struct parameters in OSL module.
Added some OSL shaders for doing basic vector arithmetic.
Added support for global N in OSLRenderer.
Fixed OSLShader hash bug.

Because OSL shaders are the first shader type we've supported where a single shader can have multiple outputs, we weren't taking into account _which_ particular output was connected when computing the hash.
Prevented vector->color connections for OSLShader nodes.

OSL itself doesn't allow such connections so we mustn't either. Also added a vectorToColor shader to help work around the restriction. At some point in the future it might be nice to automatically insert the conversion shader when generating state() rather than have the user do it themselves.
Fixed Widget.bound() on OS X.
Merge pull request #605 from davidsminor/sceneRootHashFixes

Scene root hash fixes
Merge pull request #615 from johnhaddon/oslImprovements

OSL improvements
Bumped version to 0.84.0 and updated Changes.
Fixed OpenGL drawing when embedded in Houdini.

Because IECoreGL is used in both the Houdini viewport and the Gaffer GLWidgets, we needed to make sure that the GL context in each shared resources.

This relies upon https://github.com/ImageEngine/cortex/pull/154.
Merge pull request #618 from johnhaddon/houdiniGLFix

Fixed OpenGL drawing when embedded in Houdini.
Fixed ParameterisedHolder parameterChanged() crashes.

These occurred if the parameterChanged() method left a parameter with an invalid value and then raised an exception. ~ParameterModificationContext would then raise another exception during exception handling and boom. See comments in ParameterisedHolder.cpp for more details.
Merge pull request #619 from johnhaddon/parameterChangedExceptionHandling

Fixed ParameterisedHolder parameterChanged() crashes.
Fixed GLSL shaders used by the UI for OpenGL 2.1.

This relies on the recent Cortex changes for OpenGL 2.1 compatibility in IECoreGL.