Created a Mapper hierarchy.

Mapper is now an abstract base class. The old Mapper is now called
ChainedHashMapper that inherits from Mapper. The functionality specified
by the Mapper class is supposed to make it so that custom Mapper implementations
can be made and used by other modules without needing to know which
implementation is being used.