Resurrect SamplingProfilerIntegration

1.) Change from samples per second (persist.sys.profiler_hz) to
    interval between samples (persist.sys.profiler_ms) to match
    underlying SamplingProfiler API.  This allows samples to be taken
    less often than a second, which allows lower overhead for always
    on profiling.

2.) Add persist.sys.profiler_depth to control the number of frames
    kept. Currently defaults to 4 which is the default hprof depth,
    but often 12 is necessary even in benchmarks to get a good idea
    where time is being spent.

3.) Moved SNAPSHOT_DIR creation to initialization time instead of
    checking it on every sample.

4.) Used ThreadFactory to provide human readable name to writeSnapshot
    Executor thread.

5.) Fixed bug where writeZygoteSnapshot was calling wrong variant of
    writeSnapshot causing profiling to prevent zygote startup. Renamed
    underling private writeSnapshot to writeSnapshotFile to try to
    prevent future confusion.

Change-Id: Ifcfc343816b19f13a6eef2cbf25cde334d8adc3b
1 file changed