Currently we attempt to automatically register workflow input and output, and step outputs, for Gob encoding.
The issue is that, if the user has already done so, our code will panic at runtime, for example:
panic: gob: registering duplicate names for *main.DuplicateCheckResult: "main.DuplicateCheckResult" != "*main.DuplicateCheckResult"
We need to perform a "safe register", instead of blankly calling gob.Register.