tools/git-sync-deps is a stand-alone program, not dependent on synced deps.

Motivation:  With common repo, we had a chicken-egg problem.

BUG=skia:
R=borenet@google.com, mtklein@google.com

Author: halcanary@google.com

Review URL: https://codereview.chromium.org/351063003
diff --git a/tools/git-sync-deps b/tools/git-sync-deps
index ac4576d..22309bd 100755
--- a/tools/git-sync-deps
+++ b/tools/git-sync-deps
@@ -11,6 +11,9 @@
   An optional list of deps_os values.
 
 Environment Variables:
+  GIT_EXECUTABLE: path to "git" binary; if unset, will look for one of
+  ['git', 'git.exe', 'git.bat'] in your default path.
+
   GIT_SYNC_DEPS_PATH: file to get the dependency list from; if unset,
   will use the file ../DEPS relative to this script's directory.
 
@@ -32,8 +35,25 @@
 import sys
 import threading
 
-import fix_pythonpath
-from common.py.utils.git_utils import GIT
+
+def git_executable():
+  """Find the git executable.
+
+  Returns:
+      A string suitable for passing to subprocess functions, or None.
+  """
+  envgit = os.environ.get('GIT_EXECUTABLE')
+  searchlist = ['git', 'git.exe', 'git.bat']
+  if envgit:
+    searchlist.insert(0, envgit)
+  with open(os.devnull, 'w') as devnull:
+    for git in searchlist:
+      try:
+        subprocess.call([git, '--version'], stdout=devnull)
+      except (OSError,):
+        continue
+      return git
+  return None
 
 
 DEFAULT_DEPS_PATH = os.path.normpath(
@@ -146,6 +166,9 @@
 
   Raises DepsError exception and git Exceptions.
   """
+  git = git_executable()
+  assert git
+
   deps_file_directory = os.path.dirname(deps_file_path)
   deps = parse_file_to_dict(deps_file_path)
   dependencies = deps['deps'].copy()
@@ -167,7 +190,7 @@
     relative_directory = os.path.join(deps_file_directory, directory)
 
     list_of_arg_lists.append(
-      (GIT, repo, checkoutable, relative_directory, verbose))
+      (git, repo, checkoutable, relative_directory, verbose))
 
   multithread(git_checkout_to_directory, list_of_arg_lists)