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?
Could you please be explicit about copy/move semantics for VariantHeaderMerger? In gamgee we usually declare the copy constructor and copy assigment operator as `= delete`, and the move constructor and move assignment operator as `= default`, unless we have a good reason for enabling deep-copy of objects. This prevents unnecessary/unintended/expensive copying of objects (forcing move), and also spares us from having to write correct deep-copy operations everywhere. For VariantHeaderMerger I think it makes sense to be move-only, since I can't think of a realistic use case where you'd want to deep-copy a header merger.