gclient: Preserve ANSI color codes when calling hooks.

If a hook prints error/warning output that's color-coded, gclient
will cause the coloring to be disabled since those hooks aren't
called directly from a terminal.

By emulating a terminal when launching subprocs from gclient, we can
convince them to keep the color escape codes.

LED builds with both //third_party/depot_tools rolled to this CL, as
well as depot_tools in the recipe bundle rolled to this CL:
linux: https://ci.chromium.org/swarming/task/4e40237985888310
mac: https://ci.chromium.org/swarming/task/4e4023ea0c829710
win: https://ci.chromium.org/swarming/task/4e4024612e03dc10

Bug: 1034063
Change-Id: I4150f66ef215ece06f4c32482dcd4ded14eb1bfe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2368435
Reviewed-by: Dirk Pranke <dpranke@google.com>
Commit-Queue: Ben Pastene <bpastene@chromium.org>
diff --git a/tests/gclient_scm_test.py b/tests/gclient_scm_test.py
index fae7a08..d5fafed 100755
--- a/tests/gclient_scm_test.py
+++ b/tests/gclient_scm_test.py
@@ -1009,7 +1009,7 @@
     self.options = BaseGitWrapperTestCase.OptionsObject()
     self.url = self.git_base + 'repo_1'
     self.mirror = None
-    mock.patch('sys.stdout').start()
+    mock.patch('sys.stdout', StringIO()).start()
     self.addCleanup(mock.patch.stopall)
 
   def setUpMirror(self):
@@ -1122,7 +1122,7 @@
     self.options = BaseGitWrapperTestCase.OptionsObject()
     self.url = self.git_base + 'repo_1'
     self.mirror = None
-    mock.patch('sys.stdout').start()
+    mock.patch('sys.stdout', StringIO()).start()
     self.addCleanup(mock.patch.stopall)
 
   def setUpMirror(self):