Sampling Heap profile periodic collection controller implementation.

It is the initial implementation of UMA heap profiles collection controller.
Profile collection is performed periodically at random moments in time
distributed according to Poisson stream with the intensity of one profile
per 24 hours.

By default the profile collection and reporting is turned off.
It can be enabled with the flag:
--sampling-heap-profiler[=<sampling interval in KB>]
If the interval is not specified the default value of 128KB is used.

Also it can be enabled by a Finch experiment named "SamplingHeapProfiler".
It has a single parameter "sampling-rate-kb" which defaults to 128KB.

Profiles are reported via the same pipeline and format we currently
report CPU profiles.
The only difference is the trigger event for heap profiles is
PERIODIC_HEAP_COLLECTION.

BUG=878604

Change-Id: I172de2c02f41c5d2a073d33d10267fcdc2fdf3a8
Reviewed-on: https://chromium-review.googlesource.com/1194978
Reviewed-by: Lei Zhang <[email protected]>
Reviewed-by: Ilya Sherman <[email protected]>
Reviewed-by: Mike Wittman <[email protected]>
Commit-Queue: Alexei Filippov <[email protected]>
Cr-Commit-Position: refs/heads/master@{#589730}
13 files changed