Add empty memory profiler

The empty memory profiler identifies large allocations of potentially unused
memory.  To do so, it scans allocated memory for runs of 4096 bytes or more
containing a pattern that indicates unused memory.  The memory scan takes place
on free() and during a live heap walk.  The results are stored in the MEM_LIVE
counter for both freed and leaked memory.  The recorded stack frames always
belong to the resource allocation.

In its standard mode (-ep), the empty memory profiler looks for memory pages
filled with zero bytes.  Such pages can occur due to deliberately setting memory
to zero, for instance by calloc(), memset(), or initializers.  Zero-filled pages
can also be the result of memory allocated by mmap of /dev/zero but unused
until the profiler scans the memory.

If started as -ei, the profiler initializes allocated memory with a "magic
pattern" (0xAA).  As a result, only memory that is deliberately set to zero is
reported.

If started as -eu, the profiler initializes allocated memory as with the -ei
option.  However, it records only pages filled with the magic byte.  Thereyby,
it identifies allocated memory that has never been touched (but that also might
have never been mapped to physical memory).
Merge pull request #24 from jblomer/zero-pages-single

Add empty memory profiler