SyncedVariantReader/Iterator

Also some variant_reader_test cleanup
you don't want to make a deep copy of the header every time. Just pass the shared pointer ( you know which header this file came from based on the index ). The header is fine to be shallow copied, like we do for both Variants and Sams.