os: make RemoveAll() work on windows

R=golang-dev, rsc1
CC=golang-dev
https://golang.org/cl/2212041
diff --git a/src/pkg/os/path.go b/src/pkg/os/path.go
index bea9713..74c83ab 100644
--- a/src/pkg/os/path.go
+++ b/src/pkg/os/path.go
@@ -84,7 +84,6 @@
 	if err != nil {
 		return err
 	}
-	defer fd.Close()
 
 	// Remove contents & return first error.
 	err = nil
@@ -105,6 +104,9 @@
 		}
 	}
 
+	// Close directory, because windows won't remove opened directory.
+	fd.Close()
+
 	// Remove directory.
 	err1 := Remove(path)
 	if err == nil {