Make the message ID hold a more opaque Object instance which we can
either set to a string for our outbound messages or use a helper object
for inbound classes to handle name mapping and the case where an inbound
has no assigned ID.