Add TGenericCollectionIterator as a more convenient user interface.

When using TVirtualCollectionIterators one would need to special case the
support for std::vector.

At the cost of some performance, we introduce the more generic version
TGenericCollectionIterator which works the same for all collections.

To use:

   TGenericCollectionIterator* iterators = TGenericCollectionIterator::New(obj, collProxy);
   while( void * currentElement = iterators->Next() ){
      ...
   }

or

   TGenericCollectionIterator* iterators = TGenericCollectionIterator::New(obj, collProxy);
   while( ++(*iterators) ) {
      void *currentElement = *(*iterators);
      ...
   }