IMPALA-818: Catalog server OOM over time executing many CREATE TABLE statements

Fixes the issue by explicitly releasing free memory back to the OS afte each call to
GatherCatalogObjects. Required to ensure memory gets released back to the OS, even if
tcmalloc doesn't do it for us. This is because tcmalloc releases memory based on the
TCMALLOC_RELEASE_RATE property, which is not actually a rate but a divisor based
on the number of blocks that have been deleted. When tcmalloc does decide to
release memory, it removes a single span from the PageHeap. This means there are
certain allocation patterns that can lead to OOM due to not enough memory being
released by tcmalloc, even when that memory is no longer being used.
One example is continually resizing a vector which results in many allocations.
Even after the vector goes out of scope, all the memory will not be released
unless there are enough other deletions that are occurring in the system.
This can eventually lead to OOM/crashes.
See: http://google-perftools.googlecode.com/svn/trunk/doc/tcmalloc.html#runtime

This happened with CREATE TABLE each time we called to the FE to get the list of
catalog objects, the vector inside the TGetAllCatalogObjects thrift struct grew
with each call. Even though we were not leaking memory, tcmalloc never released the
memory back to the OS so over time the catalog server failed with an OOM error.

Change-Id: Ie3e750cb13fb89605537476e9d43f065e763d7cd
Reviewed-on: http://gerrit.ent.cloudera.com:8080/1620
Reviewed-by: Lenni Kuff <lskuff@cloudera.com>
Tested-by: jenkins