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?
Can add_header() be called if the header merger was constructed using the constructor that takes a merged header + input vcf headers? If so, what happens to the old m_merged_vcf_header_ptr? Does it just get overwritten by the new merged_hdr passed in here? This seems a little problematic..

It might make more sense to provide an add_header(additional_header) function instead of this function that merges additional_header into the existing m_merged_vcf_header_ptr (if there is one) or makes additional_header the new m_merged_vcf_header_ptr if it's null because we used default construction. 

Would also be good to have a companion add_headers(vector<additional_headers>) function