1. Added VariantHeaderMerger and MergedVCFLUT for fast field look up
between input VCFs and merged VCF.
2. VariantHeaderMerger accepts both shared_ptr<bcf_hdr_t> and
VariantHeader& as inputs. To do this, VariantHeaderMerger
is now a friend of VariantHeader so that m_header can be directly
accessed.
3. Created two VariantHeaderMerger variants optimized for two different
purposes
  a. InputOrderedVariantHeaderMerger - fast traversal of all fields for
a single input VCF
  a. FieldOrderedVariantHeaderMerger - fast traversal of all input VCFs
for a single field
4. Created more rigorous tests for LUT.

5. Store shared_ptr<bcf_hdr_t> within VariantHeaderMerger. Use raw
pointers only when needed
6. Added a get_input_vcf_headers() function for MultipleVariantReader
7. Missing values in VariantHeaderMerger are represented by
bcf_int32_missing

8. Added get_field_name(), get_sample_name() in VariantHeader

9. VariantHeaderMerger can store merged field idx for a user defined
enum. Updated comments with information about how to use this feature

10. Move constructor, = for VariantHeaderMerger - disable deep copy
constructor, =