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.
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
Merge pull request #989 from johnhaddon/externalProcedurals

External procedurals
Added travis config file.

I don't expect this to work fully yet - we'll need to download and install the dependencies before things will work fully.
Added travis config to download and unpack dependencies before building.
Added travis config for installing doxygen and inkscape.
Updated to Cortex 9.0.0a-6
Made travis builds use PATH from travis build environment.
Attempted to set up OS X testing in travis.
Fixed Execute->Repeat Previous menu item.

[ci skip] - there's no need to run the travis build for a UI change.
Added scene output to ExecutableRender nodes.

This means they can be seen in the Viewer, SceneHierarchy and SceneInspector.
Added pass-through plugs for ImageWriter and SceneWriter.

This allows them to be viewed in the UI.
Removed unnecessary serialisation of pass-through plugs.