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
In my constructor, a copy happens at `m_interval_list { interval_list }` and in your suggestion a copy will happen when the constructor is called.  That seems equivalent to me.  But you're saying there is an extra benefit to doing it your way?  I guess I will read that chapter.