presubmit_support for Gerrit: don't ignore 404.

Before, presubmit_support would fail with not very useful stacktrace if
Gerrit returns 404, which is usually due to missing/invalid credentials.

This CL fixes that and improves the exception message, and also improves
logic in git_cl.

R=agable@chromium.org
BUG=

Change-Id: Iae8f0c24422c46af70929c7d5d71993164887511
Reviewed-on: https://chromium-review.googlesource.com/409650
Commit-Queue: Aaron Gable <agable@chromium.org>
Reviewed-by: Aaron Gable <agable@chromium.org>
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index 37c2fa1..d0f460d 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -1458,8 +1458,12 @@
                    'https://chromium-review.googlesource.com/#/c/123456/1'])
 
   def test_gerrit_patch_not_exists(self):
+    def notExists(_issue, *_, **kwargs):
+      self.assertFalse(kwargs['ignore_404'])
+      raise git_cl.gerrit_util.GerritError(404, '')
+    self.mock(git_cl.gerrit_util, 'GetChangeDetail', notExists)
+
     url = 'https://chromium-review.googlesource.com'
-    self.mock(git_cl.gerrit_util, 'GetChangeDetail', lambda _, __, ___: None)
     self.calls = [
       ((['git', 'symbolic-ref', 'HEAD'],), 'master'),
       ((['git', 'symbolic-ref', 'HEAD'],), 'master'),