A template library for creating custom iterators