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 think I explain the memory layout in the comments for MergeVCFLUTBase. This class contains two matrices (vector<vector<int>>) which store the mapping information:
m\_inputs\_2\_merged_lut and m\_merged_2\_inputs\_lut. You can layout each matrix in one of the 2 following ways:
a. LUT[i][j]  corresponds to input VCF i and field j 
a. LUT[i][j]  corresponds to field i and input VCF j
Option (a) is optimal where you are looking at all the fields of a single VCF in quick succession, while (b) is optimal when you are looking at all VCFs for a particular field.
The 2 boolean template parameters control the layout of the two matrices. If the parameter value is true, then option (a) is picked, else option (b)

In your example, the innermost loop iterates over all the fields for a given VCF. Hence, it would be 'optimal' to lay out the LUT entries for all fields for a given VCF in consecutive memory locations, Hence, <true, true, true, true> template instatiation (the one I have now) would be the best.