MultipleVariantReader and MultipleVariantIterator

Enables iteration over multiple input files, returning a vector of Variant objects per genomic location.

The vector is reused per location, so the caller must complete processing before continuing iteration, or make a copy.

Strongly inspired by the example of VariantReader/VariantIterator.  Merging these Readers or Iterators may be appropriate.

This is an alternative solution to Issue #76 
why do you need to create a shared pointer here? 
isn't top going to return a const reference to a shared pointer to a variant iterator for you ?  If you wrap that into another shared pointer, I think you get a shared pointer to a shared pointer, unless there is some special constructor for shared pointers when taking shared pointers to just increment the reference count. Either way, I'm very  confused here.