First version of the clamp node
Setting defaults in plug constructors
Using the recommended method of comparing the ancestor of the input to the plug
Updating to use iterators, updating testing logic to be more clear
switching to use isAncestorOf as suggested, in order to avoid the ancestor call which apparently can trigger an evaluation through python
adding a doxygen comment and fixing some tabbing issues
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.
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.