Previously, peered data did not hold references, but rather deep copies of internal data.  This was fine if we were only accessing and writing the data on one side.  However, to keep peered, nested lists/maps up to date between two endpoints in a connection, actually need to maintain references so that both sides can keep track of whether a change made was to the reference itself or to set it to a new reference.  This complicates accessing data for these a bit.  For now, if we want to assign data from a peered list/map to be put into other variables, we really should append a copy_if_peered call on the end.
Added test code to ensure that serialization for nested maps worked correctly.