Refactor Sequence::collect() to only work with ICollector instances
Add Collectors factory