Move iterators into their own package

This moves all the provided iterators into their own package, significantly reducing the size of the graph package and separating concerns.

I have also made use of fmt.Stringer by replacing to ToString methods, and removed a couple of New functions that add little to readability - preferring to use direct value creation.

I am not convinced about the FixedIterator interface type naming. It looks to me like a MutableIterator, from the perspective of the graph package, but that suggests a RemoveValue(...) method which does not exist. This can be addressed later.