Previously we'd blindly clone'd the fields, which, if
`data_is_owned` is set, will always result in a a double-free.
Instead, we always clone the underlying bytes, setting
`data_is_owned` on the returned value since its likely the caller
wants to hold onto the string outside of the current context.