Ahh. That makes more sense.
One possibility would be for third-party libraries to register a handler with the core before execution begins. Right before the default case, "<internal structure>", the core calls all registered handlers and sees if any return a string, and if so use that. Problems: (1) the handlers must be very well-behaved and able to recognize values of the types their library defines, (2) order could possibly matter. The best way to handle it is probably last import, first handler, so you can always override a handler you don't like.
But that's probably left for another day, and possibly handled by some more general pattern already on the roadmap.