Use gcc/clang demangler for NiceTypeName.

@sherm1 , as a follow-up to our name mangling conversation, I found a way to demangle right in NiceTypeName.

See https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html, https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html

I don't assume you want to accept this PR. I don't know how portable this is, but I think GCC and Clang support it (idk which versions). I tested it on my computer and it worked (I actually tested it with OpenSim).

If you like this, I can write a test if you'd like. Also, There is still an issue: this leaks memory (`__cxa_demangle` allocates memory; see the last sentence of the first link above). I'm not sure how to prevent that...
Initially, I only freed upon success. However, the code snippet you showed me from stackoverflow freed the memory regardless of the status. I don't know what's correct; I assumed Mr. Stackoverflow knows more than I do.