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..
- You don't need to call clear() explicitly -- ClonePtr handles that properly when reassigned.
- This will blow up if `filter` is nullptr since you are dereferencing it without checking. This is a great example of why pointers are terrible! 
- To be consistent with the constructor, I think you meant here to check if the pointer is null and if so replace the filter with some default one, right?