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..
This looks correct now (yay!). Sorry I didn't catch this earlier, but now that I've seen it functional I think it is not good API design to take a pointer here. This forces the user to heap-allocate the filter unnecessarily, or stack allocate one and then take "&" of it. That's ugly and leak-prone and I don't see what's gained by doing it. Instead I suggest
```c++
void setFilter(const ComponentFilter& filter) {_filter = filter;} // that's the whole routine!
```
Then if you want to provide the ability for the user to change to the default feature, do that explicitly with an additional method:
```c++
void setDefaultFilter() {setFilter(ComponentFilterByType<T>());} 
```
Both routines together are less code than the original, provide the same capability, and avoid all use of pointers in the API.

The matching change should be done in the constructor also -- make one that takes a filter and one that doesn't.