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 
hmm this looks very hacky.

The operator != is called at every iteration of the for-each loop. It is comparing two iterators:
* the one obtained after calling `operator++` on the current iterator (which was initialized with `MultipleVariantReader::begin()`)
* the one obtained by `MultipleVariantReader::end()`

and while it returns true, iteration continues. 

While this hack works, it is not really answering the difference question and would be dangerous to use in case the rhs iterator was created by something other than `MultipleVariantReader::end()`. 

How about return an empty iterator in the last iteration (i.e. when fetch_next_vector returns an empty queue) by calling `MultipleVariantIterator()` and make `MultipleVariantReader::end()` also return that. Then you can simply compare that the `m_variant_vectors` are the same. This will be cheap because one will always be `nullptr`.