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

Perhaps it would be better to just have field_index() instead of individual_field_index() and shared_field_index(), since the implementations are the same.