Port to Boost.Core demangle()

The port removes some conditional code from pretty_name() implementation. As a side effect, this improves portability (AFAICT, the previous version wouldn't do demangling on clang).

Additionally, the commit fixes a possible buffer overrun if demangle() returns a string equal to cvr_saver_name or cvr_saver_name with trailing spaces.
Changed implementation to use the low level interface for demangling.

Added a check for demangling errors, an exception is thrown in this case. The new implementation also does not allocate std::string until the parsing completes.
Merge pull request #4 from Lastique/patch-1

Thanks a lot!
Minor changes: added consts and replaced BOOST_THROW_EXCEPTION with throw_exception
Fixed problems reported by inspection program
Fix a lot of typos [refs #10294](https://svn.boost.org/trac/boost/ticket/10294)