Another osv::demangle() variant

Add a second osv::demangle() variant which returns a unique_ptr to a newly
allocated buffer. This will allow callers like elf.cc to stop using the
obscure and probably non-standard internal gcc API.

The reason that I return a std::unique_ptr<char> instead of std::string
is a silly concern about performance: The gcc API already allocates
memory for the demangled name, and std::string cannot "adopt" some
already-allocated memory and needs to allocate again, and copy. On the
other hand, std::unique_ptr<char> simply wraps the already allocated
memory, and has zero performance overhead when compared to the underlying
gcc demangling API.

Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>