IndexedVariantReader/Iterator

Iterates through an indexed BCF based on the intervals passed to it.

Heavily based on Khalid's IndexedSamReader/Iterator.

Delivers #160 for BCF
you are going to run into trouble here because after the move m_variant_file_ptr is still going to be pointing to the same file and the destructor will close it twice. Same thing for the index. Like VariantReader, these constructors need to be manually defined and setting the pointers to `nullptr` accordingly.