Fixed Box creation with nested connected plugs.

We were only iterating over the top level plugs when finding the plugs to reroute via the Box, so weren't picking up nested plugs such as shader parameters. We now use a RecursivePlugIterator to make sure we iterate to the nested plugs, and after finding connected plugs we prune the iteration to avoid visiting their children, which will already have been promoted and connected when their parent was.
Merge pull request #443 from johnhaddon/boxesWithNestedPlugConnections

Fixed Box creation with nested connected plugs.
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.