Changed Mapper iteration out of memory

The Mapper iteration style used to be implemented by storing an
iterator in memory. The old iterator pointed to a map and also held
other map specific information.

The new Mapper iteration style is a Mapper sub-class called Iterator.
It is the responsibility of the user to store the Iterator whether it
be in memory or locally (prefer local). The new iterator style doesn't
reference a map, and the corresponding map is given on all function calls
to the Mapper object.

All this work is in preparation for making the Mapper an abstract class
and making many subclasses.