Use proper SafeCopy instances everywhere

SafeCopy can reuse Serialize instances, but doing so is not a good idea
because it means they are not robust to representation changes.

We had quite a number of SafeCopy instances that were directly reusing
Serialize instances. So introduce _v0 variants and use the SafeCopy upgrade
mechanism. The old _v0 variants still use Serialize to some extent, but now
there are no more Serialize instances for current (ie not _v0) types.