SyncedVariantReader/Iterator

Also some variant_reader_test cleanup
the problem with doing this is that the tests run in tandem so if the API is missing some unpacking we would never catch. That's why for the single reader I put them in separate tests. 

Here you are only testing the move constructor, so there is no real need to validate all the api's on the moved record. Just check that the moved record matches the original record at some level (like alignment_start()).