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
I am a little concerned that we are working with these naked pointers in all our readers and iterator classes. I know this is beyond the scope of this PR but I think we should refactor them all to use unique_ptr's that know how to destroy them properly (so we don't need to define custom destructors for all these classes either. I'll open a ticket for that.