Symbols can have encodings that need to be Marshaled

Add a new interface to the few special objects that can be Marshaled
with encodings.
Merge remote-tracking branch 'shepmaster/utf8-symbol'