1. Fixed post and pre increment/decrement operations for
SharedFieldIterator, IndividualFieldIterator and IndividualFieldValueIterator
a. Post inc/dec always return a copy of the iterator with the original
position of this iterator (before the inc/dec)
b. Pre inc/dec return reference to this iterator
2. Added some simple test cases for inc/dec
Merge pull request #375 from broadinstitute/intel_iterator_inc_dec

Made return values for variant field iterators consistent with STL iterators
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?
Edits based on suggestions by Joel and David
1. 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.
2. 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
Created more rigorous tests
3. Use static const int members instead of #define
4. Use different VCFs with different headers in the tests
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 now represented by
bcf_int32_missing instead of -1
8. Made validate_header() private in MultipleVariantReader again.