SyncedVariantReader/Iterator

Also some variant_reader_test cleanup
instead of doing this you should just add a new parameter to the `generic_variant_reader_test` function and pass the **reader** to it. This way you get the single, multi, indexed and synced readers tested for free.