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
IndexedVariantReader/Iterator
- heavily based on Khalid's IndexedSamReader/Iterator