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..
That does *two* heap allocations. Just replace lines 107-109 with:
```_filter = new ComponentFilterByType<T>();```
Alternatively, you could do the whole thing in the initialize list:
```_filter(f ? f : new ComponentFilterByType<T>()) {}```
Which one is better is a matter of taste -- to me I think it better conveys the idea that _filter gets initialized here either to the passed-in filter or a default one.