SyncedVariantReader/Iterator

Also some variant_reader_test cleanup
the original idea of the templated reader came from my pipe dream that I would be able to write different iterators but maintain only one variant reader. It has proved not to be the case. We are writing a new reader for every new iterator. If that is the case, we should simply get rid of the template parameter here and just tie the reader class to the iterator class. 

Although in this case, at the very minimum, I would expect it to go together with the `IndexedVariantReader`. And maybe we could even get them all to work with the `MultipleVariantReader`.... I'm pipe dreaming again....