Added RecursiveChildIterator.

This iterates over all the descendants of a GraphComponent in a depth-first fashion. Because this is pure C++ functionality, it doesn't fit neatly into our python driven unit tests. For now I've defined a c++ function to do the testing, and bound it into python to allow it to be called by the python tests. This seems better than maintaining a separate test framework, particularly because our experience with boost::test in Cortex hasn't been great. In future perhaps we should add our own TEST_ASSERT macros that communicate to the python tests via exceptions of some sort.
Enabled drag-reconnect for CompoundPlug children in node graph.

Previously we were only iterating over the direct children of the node to find plugs suitable for reconnection. Now we use a RecursiveChildIterator to make sure we visit the children of CompoundPlugs too.
Added FilteredRecursiveChildIterator.

The test case actually relies on some typedefs from an upcoming commit, but I wanted to commit this on its own so it can be seen in isolation for review - the typedefs affect loads of files with very repetitive changes.
Added typedefs for FilteredRecursiveChildIterator.

Also renamed ChildNoduleIterator to just NoduleIterator to match the rest.
GraphGadget reconnect using the new RecursivePlugIterators.
Merge pull request #224 from johnhaddon/recursiveChildIterator

RecursiveChildIterator and drag reconnect fix.