Enable Crashpad for Android

Overview:
This CL disables Breakpad for Chrome, Content Shell, WebView, and
Chromecast on Android and replaces it with Crashpad. When a crash
signal is received, the browser forks+execs a Crashpad handler process
either for itself or on behalf of a crashing child to create a crash
dump.

components/crash/
  - Remove CrashDumpManager. Minidump creation is handled entirely by
    Crashpad.
  - Remove OnChildStart from ChildExitObserver as it is no longer
    necessary.
  - ChildExitObserver observers CrashHandlerHost to be notified when
    child processes receive crash signals.
  - De-duplicate calls to ChildExitObserver::Client::OnChildExit when
    NOTIFICATION_RENDER_PROCESS_{CLOSED, TERMINATED} are both sent.

components/minidump_uploader/
  - Uploaders expect crash reports to already be MIME encoded since
    Breakpad was doing that in a signal handler call-back.
    CrashFileManager now automatically calls into native code to do
    the encoding and write to a directory of crash reports whenever it
    checks for reports without logcats.

chrome/app/*.{cc,h}
chrome/browser/*.cc
content/shell/app/*.{cc,h}
content/shell/browser/*.cc
  - Initialize Crashpad instead of Breakpad, with minor cleanup and
    adjustment for changes to CrashDumpObserver.

chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc
  - Simulate crashes/exits with NOTIFICATION_RENDER_PROCESS_{CREATED,
    CLOSED} and signals sent to ChildExitObserver instead of a crash
    dump.

android_webview/
  - AwBrowserTerminator now observes child process crashes via
    ChildExitObserver rather than its own pipe.
  - Crashpad always produces minidumps, and not microdumps.
  - Disabling Crashpad is not yet supported.

chromecast/
  - There are now two directories that crash report uploaders should
    be aware of: "Crashpad" contains a database of raw minidumps
    produced by Crashpad, and "Crash Reports" contains MIME encoded
    minidumps. MIME encoding is performed by a CrashReportMimeWriter
    in CastCrashUploader.java:checkForCrashDumps().

TBR=yfriedman@chromium.org,peter@chromium.org,isherman@chromium.org,jam@chromium.org,wnwen@chromium.org,torne@chromium.org,halliwell@chromium.org,tobiasjs@chromium.org,rsesek@chromium.org,sanfin@chromium.org,jperaza@chromium.org,mark@chromium.org

Bug: crashpad:30
Change-Id: Ib1b0fe085272a7e1e4a91462add50e41eecad746
Cq-Include-Trybots: master.tryserver.chromium.android:android_compile_x64_dbg;master.tryserver.chromium.android:android_compile_x86_dbg
Reviewed-on: https://chromium-review.googlesource.com/c/1388654
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619711}
68 files changed