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
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.
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.