Optimised repeat calls to Context::hash().

Also added python binding and a test.
Added Context::changed() method.

This is an official means of letting the Context know that an entry has been changed behind its back (through shared or borrowed ownership for instance). It avoids constructing the changed signal unnecessarily (previously it was documented that such changes must be accompanied by a manual emission of the signal), and ensures that the lazy hash computation is invalidated appropriately.
Made Context::hash() ignore "ui:" prefixed entries.

In general these entries have become a bit of a nuisance - there are now many places where we have to ignore them because they're not relevant to computation, and we don't want small changes in the ui to trigger recomputes. There's a good case for making the UI use a second structure for UI specific entries, but for now we do the pragmatic thing and ignore them in one more place. On the bright side, we can now remove special case code from ExecutableRender and SceneWriter, so the net effect is one less special case.
Refactored ValuePlug::hash() to delegate to Computation.

This makes more sense as hash() and compute() are inextricably linked, and putting all the logic in one place opens up the possibility of abstracting the Computation class to allow alternative implementations in the future. It also makes ValuePlug::hash() and ValuePlug::compute() simple and symmetrical.
Optimised computation for long chains of nodes.

This reduces scene traversal time for a chain of Attributes nodes below a SceneReader as follows :

10 nodes :   42% reduction
100 nodes :  93% reduction

Fixes #963.
Guaranteeing unique name when using setName
Merge pull request #988 from ivanimanishi/uniqueNameWhenSetName

Guaranteeing unique name when using setName
Guaranteeing the execution of Dispatcher::postDispatchSignal()
Job directory creation in Dispatcher

Added a Dispatcher::createJobDirectory() virtual function that should be implemented to create a directory for temporary job specific files, and return its path. This function gets called in Dispatcher::dispatch(), and subsequent calls to Dispatcher::jobDirectory() will return its result.
Added bool argument to Dispatcher::postDispatchSignal()

This argument will be True if the dispatch process was successful, False otherwise
renamed 'jobDirectory' plug to 'jobsDirectory'
removed public virtual Dispatcher::createJobDirectory()
Fixed project.py startup file for renamed Dispatcher plug.
Reordered Dispatch job directory creation.

It now creates the directory _after_ it validates the nodes, so it won't needlessly create a directory in the case that it's going to throw anyway.
Merge branch 'davidsminor-dispatcherTweaks'
Updated Changes file for version 0.1.0.0.
Added an ExternalProcedural node to GafferScene.

This allows external procedurals and archives to be referenced within a Gaffer scene.
Added UI for ExternalProcedural node.

Fixes #722.
Removed unused local typedefs.

GCC 4.8 adds a new warning type for these, and since we compile with -Werror, it breaks the build.
Merge pull request #986 from johnhaddon/computationOptimisation

Computation optimisation