Added failing test for Group.

This exposes the bug which is the root cause of #179.
Added failing Group test.

This replicates the problem described in #210.
Reimplemented InputGenerator as a Behaviour.

This doesn't really change anything, but just moves it off into a namespace with other utilities so that we can keep the main namespace tidier.
Fixed StandardNodeGadget to remove nodules when plugs are removed.
Added FilteredChildIterator constructor overload

This takes a GraphComponent::ChildContainer.
Robustified InputGenerator.

- Added python bindings
- Added test cases
- Fixed serialisation of plugs
- Fixed undo of connection changes
- Fixed bugs caused by mixing signed and unsigned ints and ints of different size
- Deprecated methods which encouraged node implementations to change behaviour based on connectedness.
- Replaced endIterator() implementation with one which simply returns the end. The previous implementation claimed to return the end of a range of connected plugs, which isn't possible.
- Added todos for further improvement.
Reimplement Group using InputGenerator.

This fixes the recently added failing test cases because the InputGenerator has a more robust approach to plug creation than the old Group code.

Fixes #179.
Fixed #210.
Reordered reconnect behaviour to suit InputGenerator.

When we drag an existing connection from one nodule to another, there is always an intermediate state which isn't the desired destination state. We can either break the existing connection and then make the new one (intermediate state has no connections) or make the new connection and then break the old one (intermediate state has two connections). We originally did the former, but that ran afoul of the InputGenerator, which might remove plugs when a connection is broken, including removing the plug which is the new destination. So we now reverse that order.

Fixes #302.
Added ScriptNode::currentActionStage() method.

This can be used from slots to determine if the current events are an original, or a replay via the undo() or redo() methods.
Fixed InputGenerator node deletion bugs.

Formerly the InputGenerator would perform its work any time an input changed, even when the input was changing because of an undo or redo event. This created problems where it would attempt to remove the same plug twice - these are documented in the GraphComponent.cpp changes where problems are now detected and reported.

The problem is fixed by only making the changes when the original event occurs, and relying on the undo system to track and undo/redo the changes automatically from there on.
Bringing labels on node menu in line.
fixing typo
Improved test to clarify intended behaviour.
pruning prefixes already indicated by membership of submenu.

also:
 - fix for missing AlembicSource search string
 - recontracted OpenColorIO to treat it as single word
Adding namespace prefixes to python class typeNames.

This was formerly impossible due to limitations in IECore.registerRunTimeTyped, but will be possible if this pull request is accepted :

https://github.com/ImageEngine/cortex/pull/57
Renamed WriteNode->ObjectWriter and ReadNode->ObjectReader.

Fixes #17.
Set minimum height on ramp editor.

Fixes #445.
Fixed non-selectability of out of range ramp handles.

Fixes #450.
Fixed empty messages in ErrorDialogue.ExceptionHandler.

It seems that sys.exc_info() isn't actually set when a context manager is handling an exception, so empty messages were being displayed by ErrorDialogue.displayException().
Added popup error dialogues for file save failures.

Fixes #449.