Add DumpWithoutCrashing throttling variants.

When using the legacy DwC function, we observe circumstances where
DwC is run hundreds or thousands of times in the course of few
minutes. This may leads to browser unresponsiveness as OS struggles
to keep up with the dump requests because of the frequency with which
it is called. To prevent, this CL introduces new variants of the
DumpWithoutCrashing function that would limit the frequency with
which the dumps are taken.

The throttling variant, which will also be the default, is named
DumpWithoutCrashing() and most of the usage will be steered towards
the default variant. Additionally, another variant, which uses unique
identifier, will be DumpWithoutCrashingWithUniqueId() whereas the
unthrottled version will be named DumpWithoutCrashingUnthrottled().

In addition, this CL also includes:
1. Addition of DumpWithoutCrashingUnthrottled() to banned function in
PRESUBMIT script which will restrict users from using unthrottled DwC.
2. A histogram to track the frequency of throttled vs uploaded dump
count.
3. Unittests coverage to test the throttling variants.

Bug: chromium:1259381
Change-Id: Ib217a8ce28d82927ba39cb10f774987ed6bdb5ba
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3218378
Reviewed-by: Charlie Harrison <csharrison@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Brian White <bcwhite@chromium.org>
Reviewed-by: Sean Kau <skau@chromium.org>
Reviewed-by: Will Harris <wfh@chromium.org>
Commit-Queue: Will Harris <wfh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#969294}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index cef3cc7..a056f49 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -974,6 +974,16 @@
       ),
     ),
     (
+      r'/\bbase::debug::DumpWithoutCrashingUnthrottled[(][)]',
+      (
+          'base::debug::DumpWithoutCrashingUnthrottled() does not throttle',
+          'dumps and may spam crash reports. Consider if the throttled',
+          'variants suffice instead.',
+      ),
+      False,
+      (),
+    ),
+    (
       'RoInitialize',
       (
         'Improper use of [base::win]::RoInitialize() has been implicated in a ',