Fix to fix for #5755 -- backref serialization issues in zaml
This commit addresses the original issue that the change reverted in the previous
commit for #5755 was intended to fix by removing the special case on labels in
emit (lables, even if they are never generated, are not "new lines" and thus
@recent_nl should always be set to false when one is emitted).
It also partially addresses a related issue wherein temporary strings generated
when field names are constructed recycle their object_id (they are temporary)
and thus cause incorrect back references. This commit "fixes" the problem by
never generating backrefs to strings (treating them as immutable).
It does not address other suspected issues such as thread safety durring serialization
due to the use of class variables to store the seen-object hash or the use of object
ids as "permanently unique" identifiers.
Paired with: Daniel Pittman
Advice & Commiseration: Jesse Wolfe