issue-502: Count m(un)map for each stacktrace in MemoryRegionMap

..instead of HeapProfileTable

This upstreams chromium commit reviewed at:
https://codereview.chromium.org/12388070

Original and upstreaming author is: Dai MIKURUBE

This patch fixes a bug that gperftools(TCMalloc)'s mmap profiler
(HEAP_PROFILE_MMAP) doesn't hook some memory pages used by the
profiler itself.

This problem has been lived in gperftools for a long time.
It is discussed in gperftools' issue 502.
https://code.google.com/p/gperftools/issues/detail?id=502

Some bugs in the mmap profiler were fixed by
https://code.google.com/p/gperftools/issues/detail?id=383,
but the patch in the issue 383 didn't fix the bug mentioned in
the issue 502.

This change reverts the previous patch and http://crrev.com/132771
at first. Then, it modifies MemoryRegionMap to count m(un)map
calls for each stacktrace in itself instead of merging the counts
for each stacktrace in HeapProfileTable.

This change also cleans up heap-profiler, heap-profile-table and
deep-heap-profile.

Chromium-BUG=https://code.google.com/p/chromium/issues/detail?id=181517
Chromium-Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=188176
add heap-profile-stats.h to dist .tar.gz
issue-561: don't cast function pointer to void *

Which gcc-3.4 (as shipped in rhel 4) doesn't like.

Cast to void * was originally added to avoid issue on OSX which
doesn't have sighandler_t.

In that place we only need to know if it's null or not. So casting to
intptr_t looks like simplest possible way to achieve that.