Two primary changes:

  1) Previously, when writing to a peered map or list, the internal
     list that we would write would no longer be peered.  For
     instance,

     Sequence some_msg () returns List(element:Text) l
     {
        SideA.start
        {
           l = ['hi'];
        }
     }

     In this case, l.get_val(_active_event) would return a non-peered
     InternalList, which then could not be correctly serialized across
     the network.  First change in this commit copies variables
     assigned to map and list variables through write_val.

  2) Second change: we must serialize InternalLists and InternalMaps.
     Added helper code to determine correct constructor signature to
     use between InternalLists/Maps and WaldoVariables.