Avoid mutation by deepcopying, and test using Default_* constructors
Avoid mutation by deepcopying, and test using Default_* constructors

In anticipation of removing the mutation side effect in the `ToWire`
functions, decouple existing tests from this behavior by:
  1) adding a `deepCopy` function to avoid mutating the original struct
  2) Test default-setting accessors against the `Default_*` constructed types.

thriftrw/thriftrw-go,thriftrw/thriftrw-go,thriftrw/thriftrw-go