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 
not that you should use it now, but just for your awareness in future situations, boost provides zip iterators for this kind of paired iteration. Code would look something like this:

```c++
for (const auto& pair : zip(variant_files, variant_headers)) {
  m_queue.push(make_shared<VariantIterator>(pair[0], pair[1]));
}
```

sometimes it's clearer, other times not so much, but it's a cool tool to have on the belt. I'll add a generic zip functionality to gamgee later so we can use it in future code.