Feature traverse pruned

This is another addition for the `CatalogTraversal<>` template to make it usable for the garbage collection. It keeps track of all *pruned catalogs* that were not traversed due to history pruning. All these catalogs can be traversed using `CatalogTraversal<>::TraversePruned()` afterwards.
The idea is to traverse all catalogs (in revision granularity), that are supposed to stay intact, first. This could be every named snapshot + a short catalog history starting from there.
As soon as all these catalogs are traversed (possibly in multiple `CatalogTraversal<>::Traverse()` runs), a single `CatalogTraversal<>::TraversePruned()` will go through all catalogs that have been left out until then. Every data object that is found in these (previously pruned) catalogs can be destroyed, given it is not referenced by any of the preserved catalogs.

Additionally this Pull Request contains test cases to validate the functionality of `TraversePruned()`.