gui app: added error tolerant script loading from the command line
added todo about displaying load errors in a dialog
Merge pull request #978 from davidsminor/errorTolerantCommandLineScript

gui app: added error tolerant script loading from the command line
Quick change to execute app to handle executable nodes inside boxes.  Tested and seems to fix problem.
Merge pull request #982 from danieldresser/appExecuteBox

Quick change to execute app to handle executable nodes inside boxes.
Removed trailing whitespace from SConstruct.
Improved version numbering scheme

We always intended to use the semantic versioning scheme as defined at http://semver.org. However, in practice, we've kept the major version at 0 to indicate that we haven't yet fully locked down compatibility on anything, and we've compiled and installed all dependent tools separately for each and every version of Gaffer installed. We're releasing new versions of Gaffer sufficiently regularly that this is becoming too much of an overhead - particularly when combined with IE's "dev" version suffixes, which force a developer to have local installs of all dependent projects.

This commit marks major version 1, and we will now always increment the major version whenever introducing any backwards-incompatible change. As we may break compatibility fairly regularly, and often breaks due to refactoring don't actually provide significant functionality, standard semantic versioning would lead to version numbers which aren't particularly useful to the casual user - they would increment regularly but the user would see little change in practice. We've therefore adopted an additional version prefix - the "milestone" version. We'll bump this whenever Gaffer reaches significant milestones in terms of functionality and we wish to shout about it and otherwise draw attention to ourselves. The current version is 0.1.0.0, indicating that we don't have much to shout about yet.

It's critical going forwards that we correctly increment the right version numbers, and describe thoroughly the nature of incompatible changes in commit messages so that they can be collated into a suitable section of the subsequent release notes.

A new Version.h header file provides a GAFFER_COMPATIBILITY_VERSION macro, which combines GAFFER_MILESTONE_VERSION and GAFFER_MAJOR_VERSION into a single number suitable for use in conditional compilation.

At Image Engine we can now create a $GAFFER_COMPATIBILITY_VERSION environment variable (which would initially be 0.1), and use that for the installation of dependent tools, reducing the overhead in managing development builds.
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.