Split from `-core` so it doesn't depend on quickcheck,
generic-arbitrary and quickcheck-instances that could propagate downstrem.
Also allows users to defined their own.
With all roundtrip property tests.
Later this should also absorb test nix-store/daemon harness from
`-remote` so it can be reused by others.