SamIterator: remove unnecessary move construction
VariantIterator: remove unnecessary move construction
Merge pull request #193 from broadinstitute/mc_refactor_fetch_next_record_192

Remove unnecessary move constructions from our iterators
Indexed iteration of bam/cram files. #7
Variant: add index based field getter API

individual and shared fields can be more efficiently accessed via
indices looked up from the header once instead of doing the hash lookups
every time you access a field (during traversal). This commit adds that
functionality.

* add field index API to the VariantHeader
* refactor code duplication in INDIVIDUAL and INFO field API
* avoid double index lookup in the unforgiving field getter API
* add tests for missing indices in the header

ps: tests for the by_index API are written in terms of the field getter
API that accepts conversion. Exceptions are on the tests commented out
that require #187 to be implemented. Hence why a few are not covered.

fixes #162
Merge pull request #189 from broadinstitute/mc_index_based_api_162

Variant: add index based field getter API
Merge pull request #196 from broadinstitute/ks_interval_sam_iteration_using_indexed_files_issue_7

Indexed iteration of bam/cram files. #7
Sam: implementation of mate_alignment_stop()

* 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

This sets the base for issue #6