Port to Boost.Core demangle()

The change does several things:

- Makes use of the common demangle() implementation in Boost.Core.
- Fixes a memory leak if std::string constructor throws.
- Removes the dependency on Boost.Algorithm.
- Makes the behavior consistent for platforms with and without __cxa_demangle().
Worked around C4127 warning with MSVC.
Fix output of NaN on msvc-14.

See: http://blogs.msdn.com/b/vcblog/archive/2014/06/18/crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1.aspx
Removed unused demangle() function.
Added a pseudo-test for typename formatting.

The test doesn't verify correctness of the output because the formatting result is platform-dependent. The test succeeds if the formatting code compiles and doesn't crash in typical use cases. The output correctness can be checked manually.
Merge pull request #2 from Lastique/patch-1

Port to Boost.Core demangle().
Thanks for the patch and the good discussion.
Merge pull request #11 from mkurdej/fix/nan-output-msvc-14

Fix output of NaN on msvc-14.
Thanks!
Merge remote-tracking branch 'origin/develop'