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.