Refactor Mapper into modules and MapperBuilder

I refactored some of the responsibilities of Mapper into modules and I made a MapperBuilder object which handles the construction of a new Mapper from within the Mapper.build_mapper method.  I also added functionality to mark empty rows of input as empty rather than with errors for each required field.