Feature/harvester

Implements an abstract harvester with [lazy enumerators](http://ruby-doc.org/core-2.0/Enumerator/Lazy.html) for `records` and `record_ids`.  

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.

An `OAIHarvester` is also implemented, with appropriately lazy enumerators. 
I can imagine the end time not being known if the activity is handled by a job queue.
In that case, there could be an API resource that gets hit when the queued job is done to update its status, where that endpoint updates the activity by calling set_end_time.
It seems like a good idea to have this model doing what it's doing.