SharedField: add operator== and operator!=

fixes #186
IndexedVariantReader/Iterator
- heavily based on Khalid's IndexedSamReader/Iterator
Merge pull request #194 from broadinstitute/jt_variant_intervals

IndexedVariantReader/Iterator
bcf_close crashes when it sees a nullptr
Merge pull request #199 from broadinstitute/jt_bcf_close

bcf_close crashes when it sees a nullptr
Interval: add interval parsing support

Class interval holds intervals (chr, start, stop) and can read and write
all the following interval types: BED, GATK and PICARD. Functionality
includes:

* Creating and manipulating Interval objects
* Reading interval files in any of the three formats (including mixed formats)
* interval tiling routines
* tests for the entire API

Doesn't include:

* header validation for picard format
* interval set operations (todo)

fixes #163
Sam: implementation of mate operations

* add mate_alignment_stop, mate_unclipped_start, mate_unclipped_stop
* add mate operations overloads for performance and tests
* fix off-by-one bug on Sam::alignment_stop (it was reporting the base after the last inclusive base, contradicting the docs)
* refactor cigar operator parsing routine from SamBuilder to Cigar class for mutual use
* add consumes_read_bases and consumes_reference_bases as static methods to the Cigar class
* add tests to the new API and all new functions

fixes #6
Merge pull request #190 from broadinstitute/mc_mate_alignment_stop

Sam: implementation of mate operations
Merge pull request #200 from broadinstitute/mc_interval_support_163

Interval: add interval parsing support
Merge pull request #197 from broadinstitute/mc_operator_equals_shared_186

SharedField: add operator== and operator!=
IndividualField: add operator== and operator!=

Add implementation of the two operators for both IndividualField and
IndividualFieldValue so we can write tests more easily and compare
objects. Comparison is based on value equality. The Genotype class
already had the operators implemented (thanks @kshakir)

fixes #187