Copy takes a proto message and destination and makes a safe copy of it
by marshaling the message to the text format and unmarshaling it on a new
struct. This allows us to safely send proto through channels without
copying the mutexes that are present in the proto genereated structs.