Optimize presubmit --all with --no_diffs option

Some of the expensive checks when running presubmit --all, such as
CheckStableMojomChanges (~300 s) and CheckAddedDepsHaveTargetApprovals
(~200 s) only look at diffs and are therefore guaranteed to be NOPs when
running presubmit --all or --files=. Passing along the no_diffs state
lets these expensive checks be skipped, thus allowing for faster
iteration times.

Initial testing suggests that (with some supporting changes in the
Chromium repo) this reduces "presubmit --all" times by about ten
minutes, or a bit more than 10%, and additional improvements may be
possible.

Special handling for the no-diffs case also offers a simple way to avoid
presubmit failures that happen whenever all files are flagged as being
changed.

Finally, and perhaps most importantly for having a presubmit --all bot,
when --no_diffs is passed we can treat errors like "Issue wasn't
uploaded" and "Add a description to the CL" as messages, thus making it
possible to have zero presubmit errors when run on origin/main.

Bug: 1320937, 1322936
Change-Id: I0d09dd4aae8fdaa48c8b2f89337441cf96dcff72
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3628368
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Gavin Mak <gavinmak@google.com>
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 6d9fa12..6a67c11 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -3109,6 +3109,7 @@
         '--may_prompt',
         '--parallel',
         '--all_files',
+        '--no_diffs',
         '--json_output', '/tmp/fake-temp2',
         '--description_file', '/tmp/fake-temp1',
     ])
@@ -3127,6 +3128,7 @@
         '--may_prompt',
         '--parallel',
         '--all_files',
+        '--no_diffs',
         '--json_output', '/tmp/fake-temp4',
         '--description_file', '/tmp/fake-temp3',
     ])