Iterator

Implementation of an iterator that goes thru a Component and all its sub-components in a tree (pre-order) traversal. A test case that demonstrates the usage is also included, along with wrapping to make these iterators accessible from scripting..
If `ComponentListIterator` is const, then this should be a `const_iterator`. It is not a good idea to use a standard term but give it a non-standard meaning. An alternative would be to make up a non-standard name, but why?