Instead of re-using map, added separate struct message for serialization.
Require special facilities to deserialize user-defined data structs.  Added a singleton that keeps track of data constructors for each struct.
Emitting deserialization wrapper for user-defined structs.  Note: still must actually fill contents in.