Implements an abstract harvester with lazy enums

Creates a harvester interface for lazy enumeration of records and
record_ids from a given source. An OAIHarvester is implemented as a
reference for how other harvesters will need to look.

Starts work on several other classes that will play a role in the
ingest/enrichment pipeline.

  - SoftwareAgent is a (currently empty) concern that will contain any
    info common to Harvesters, mappings, and enrichments.
  - Activity accepts an SoftwareAgent as its owner and a block to run,
    then tracks its start/stop times.
  - 'OriginalRecord' is a model for records as harvested from the
    partner.
Merge pull request #6 from dpla/feature/harvester

Feature/harvester