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. 
Ruby style generally prefers guard clauses to conditionals with blocks, and especially nested conditionals. In addition to the link on https://github.com/dpla/KriKri/pull/7#discussion_r19574188, see https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals.

I strongly prefer this to structures like those commonly used in Java:
```psuedo
define my_method(params)
  if (params_are_valid) {
    # main method body
    if (some_other_conditional) {
      # handle some edge case
    } else {
       # handle exceptions for edge case
    }
  } else {
    # handle exceptions for main body
  }
```

Logic gets pretty quickly separated from the condition(al)s that gave rise to it, in the above pattern.  (Though you can find people arguing in favor of it, e.g. [here](http://codetojoy.blogspot.com/2007/04/guard-clauses-considered-harmful.html))

@markbreedlove the ruby style guide is pretty prescriptive about use of `unless`. Specifically, it will say to [use it for negative conditionals](https://github.com/bbatsov/ruby-style-guide#unless-for-negatives), and [never use it with else](https://github.com/bbatsov/ruby-style-guide#no-else-with-unless).  Combined with the dictum to favor guard clauses, you'll typically only see it used as `do_something unless condition`.