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...
No, I think it's a bug. I'm pretty sure no one has ever seen cxa_demangle() fail so I doubt it has been tested. Best would be to check the documentation for it to see what it promises about the return value in case of status!=0. 

Humans can't write 5 lines of code reliably without a bug, even the ones who post on stackoverflow. We suck at programming!