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. 
It rubs me the wrong way, but I don't know if this is something that Ruby people are strongly in favor of.   One issue is this asking for permission, because you end up with a lot of conditions cluttering the code for things that might be this-or-that way.  I think it's cleaner to say "do this if this condition is met" and have an implicit nil return.  Another thing is I never did like the "unless" statement in Perl because it had the effect for me of making me think twice about the statement.  I know it may seem silly but, in natural language, it's ... natural ... to say "unless" but in a computer language I just think "unless" is less clear than "if not (whatever)."  I guess it's OK as a single-line statement because it makes it more compact.

The way it exists now just stands out better to say "if the block is given then do this thing," rather than making you think of the exception to the function's intended behavior first.