Workaround shutil.rmtree limitation on Windows

By default, shutil.rmtree raises an exception when deleting readonly
files on Windows.

Replace all shutil.rmtree with platform_utils.rmtree, which adds an
error handler to make files read-write when they can't be deleted.

Change-Id: I9cfea9a7b3703fb16a82cf69331540c2c179ed53
diff --git a/platform_utils.py b/platform_utils.py
index f4dfa0b..4417c5a 100644
--- a/platform_utils.py
+++ b/platform_utils.py
@@ -16,6 +16,8 @@
 import os
 import platform
 import select
+import shutil
+import stat
 
 from Queue import Queue
 from threading import Thread
@@ -210,3 +212,16 @@
       return tail[0] == os.sep  # "x:foo" is invalid
   else:
     return not drive  # "x:" is invalid
+
+
+def rmtree(path):
+  if isWindows():
+    shutil.rmtree(path, onerror=handle_rmtree_error)
+  else:
+    shutil.rmtree(path)
+
+
+def handle_rmtree_error(function, path, excinfo):
+  # Allow deleting read-only files
+  os.chmod(path, stat.S_IWRITE)
+  function(path)