Added LUT for merged header in MultipleVariantReader

1. Added MergedVCFLUT capability in utils/merged_vcf_utils.*. This class is now used within MultipleVariantReader.
2. Added test case for LUT.
3. Fixed signed-unsigned comparisons
4. Added some useful functions in VariantHeader

TODO:
1. What should be done when sample names are duplicated?
I have not yet understood what these memory layout templates do.  Will they enable different access patterns?

Here's my combine pattern:
* Iterate through a reader's result Variant vectors, one iteration per location or ref block (i)
* Iterate through the merged header's fields (j)
* Collect all the Variant.field_value(j) at location (i)

Which memory layout would this suggest, and are there other useful patterns that would conflict with it?