issue-658: correctly close socketpair fds when socketpair fails

This applies patch by glider.
compile libunwind unwinder only of __thread is supported

This fixed build on certain OSX that I have access to.
Added option to disable libunwind linking

This patch adds a configure option to enable or disable libunwind linking.
The patch also disables libunwind on ppc by default.
updated NEWS for gperftools 2.3
bumped version to 2.3
returned date of 2.3rc in NEWS back
introduced support for deprecated singular hooks into HookList

So that we can later drop separate singular hooks.
removed extra barriers in malloc hooks mutation methods

Because those are already done under spinlock and read-only and
lockless Traverse is already tolerant to slight inconsistencies.
replaced separate singular malloc hooks with faster HookList

Specifically, we can now check in one place if hooks are set at all,
instead of two places. Which makes fast path shorter.
introduced ATTRIBUTE_VISIBILITY_HIDDEN

So that we can disable elf symbol interposition for certain
perf-sensitive symbols.
set elf visibility to hidden for malloc hooks

To speed up access to them under -fPIC.
eliminated CheckIfKernelSupportsTLS

We don't care about pre-2.6.0 kernels anymore. So we can assume that
if compile time check worked, then at runtime it'll work.
inform compiler that tcmalloc allocation sampling is unlikely

Now compiler generates slightly better code which produces jump-less
code for common case of not sampling allocations.
added basic unit test for singular malloc hooks