Add support for copying an object to an object::with_zone.

In short, I wanted to use object::with_zone as variant storage that can be initialized from an unpacked object, potentially modified and serialized again later. Turns out this can actually be done with only a few minor changes.