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. 
When I was playing with Resque and Sidekiq earlier this week, I was calling `Harvester#run` from the queue job's `#perform` methods.  The idea is that the activity would be self contained in most cases.  I'm not imagining the Activity representing the times a task enters or exits the queue, but as tracking provenance for operations that have already run on records.

As written, the class allows something like this:

```ruby
activity = Activity.new(self)
activity.set_start_time
#do some stuff here
activity.set_end_time
```