tools/sort_sources.py: sort C++ source file names in build files.

tools/git/move_source_file.py updates C++ source file names in
build files for you, but it does not sort the updated file names.

With this tool, you can sort C++ source file names in build files
(both GYP and GN files supported) automatically. It's not perfect
but should work reasonably well.

BUG=456014
TEST=Run the tool against some build files. The results are included in the patch.

Review URL: https://codereview.chromium.org/888873003

Cr-Commit-Position: refs/heads/master@{#315517}
diff --git a/tools/yes_no.py b/tools/yes_no.py
new file mode 100644
index 0000000..8682ec8
--- /dev/null
+++ b/tools/yes_no.py
@@ -0,0 +1,28 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import sys
+
+
+def YesNo(prompt):
+  """Prompts with a yes/no question, returns True if yes."""
+  print prompt,
+  sys.stdout.flush()
+  # http://code.activestate.com/recipes/134892/
+  if sys.platform == 'win32':
+    import msvcrt
+    ch = msvcrt.getch()
+  else:
+    import termios
+    import tty
+    fd = sys.stdin.fileno()
+    old_settings = termios.tcgetattr(fd)
+    ch = 'n'
+    try:
+      tty.setraw(sys.stdin.fileno())
+      ch = sys.stdin.read(1)
+    finally:
+      termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
+  print ch
+  return ch in ('Y', 'y')