issue-368: unmap free spans and retry before growing heap

Because unmapped spans are not coalesced with normal spans it's
possible that we indeed have a large enough free span, but we fail to
see that because we always consider unmapped and normal spans
separately. That behavior is more likely for larger spans.

In order to protect programs that grow heap frequently and by small
amounts from much more frequent minor page faults, there's limit of
running that force pages unmap path once per 128 megs of heap growth.
issue-{368,443}: allocate metadata in big batches

It uses same approach as PageHeapAllocator. Namely allocates big chunk
which is then used to satisfy smaller allocations.

In issue-443 gradual heap grows causes old code that allocates
metadata in smaller pieces and thus more frequently to fragment the
heap. It's also causing most of 368 heap fragmentation too.

New code allocates 8 megs of address space at once for metadata
allocations. Most OSes will allocate actual memory only when
corresponding pages are touched. Thus this change should not cause
increased memory usage.

I've also made sure metadata is always properly aligned in case we
ever allocate something that breaks natural alignment. E.g. strings.
issue-368: test that we don't fragment large spans too badly

This adds unit test that does essentially same things as code to
reproduce bug in
https://code.google.com/p/gperftools/issues/detail?id=368
issue-511: implemented rel8 jump patching

I've found that Visual Studio 2012 release 32-bit C runtime library
patching fails because array new has rel8 jmp which previous code
could not handle.

Implementation is largely copied from conditional jumps handling code.
issue-511: recognise rex.w jmpq *<literal>(%rip) as iat jump

Apparently Windows Server 2012 (and presumably windows 8) now has this
form of iat jump. Which is quite useless (rex.w is according to my
understanding is not needed at all) but because of rex.w our code to
recognize jumps like that didn't work.

Fix is just skip this prefix.
issue-511: fixed negative offset handling for conditional jumps

While doing and testing issue-511 I've found one subtle bug which is
incorrect handling of short offsets. They are defined to be signed but
previous code used unsigned char for them which caused negative
offsets to look like larger positive offsets. Fix is trivial.
issue-368: added missing large_heap_fragmentation_unittest.cc
issue-368: allocate enough bytes for large metadata allocations

During issue-368 review it was correctly pointed out then in place
where I compare metadata allocation size to threshold I should pass
that size down to TCMalloc_SystemAlloc instead of threshold.
issue-518: add support for x32 ABI to linux_syscall_support.h

As pointed out in the ticket this is taken from chromium review system
here: https://codereview.chromium.org/13648012
issue-528: fixed spelling

This simply applies patch by Lajos Veres
issue-545: corrected README for CPUPROFILE_FREQUENCY variable

Applied patch by Mikhail Veltishchev
issue-534: fixed a number of gcc warnings

This applies patch from Adhemerval Zanella.
issue-550: remove config.h.in

Which is autoconf product and thus is not needed in source repository
issue-549: handle most recent mingw that has sleep and nanosleep

I.e. we have to check their presence in configure and in case of their
presence we have to avoid re-defining then in window's port.h
issue-546: fixed return type of Release_AtomicExchange on arm6+
bump version number for 2.1rc
updated NEWS and packages/ for 2.1rc
issue-553: Fix syscall wrapper for PowerPC

This is patch by Adhemerval Zanella.

* src/stacktrace_powerpc-inl.h: It is just a cleanup for the stacktrace
  functions for PowerPC. The idea is to simplify the code.
* src/tests/heap-checker_unittest.cc: Handles the PPC64 function descriptor
  correctly in malloc tracers. Different from other architecture, for PPC64
  the address returned in function pointers are the ODP entry, not the
  symbol address in .text segment. This leads the comparison bogus, since
  it will compare a ODP entry with a .text address.
* src/heap-checker.cc: Add support for PPC in ptrace.
* src/base/elfcore.h: Likewise.
* src/base/linuxthreads.cc: Fix the thread creation using the clone wrapper.
* src/base/linux_syscall_support.h: Various fixes for PPC32 and PPC64:
  fixes the kernel_stat[64] struct layout, and sys_clone and sys_socket
  implementation.
issue-552: Fix page_heap_test for system with different page size

This is patch by Adhemerval Zanella.

PowerPC uses 64K page size instead of 4k for x86 and x86_64. It makes the
page_heap_test fails because the following test:

 static bool HaveSystemRelease =
    TCMalloc_SystemRelease(TCMalloc_SystemAlloc(kPageSize, NULL, 0), kPageSize);

will always fail if kPageSize is less than getpagesize() (the default
configuration).

The following patch fixes it by trying to allocate/deallocate an entire
page instead.
issue-556: dll-export TCMalloc_System{Alloc,Release}

because page_heap_test is using this stuff