os: new FileInfo, FileMode types + update tree

R=golang-dev, r, r, gri, bradfitz, iant, iant, nigeltao, n13m3y3r
CC=golang-dev
https://golang.org/cl/5416060
diff --git a/src/pkg/os/file_windows.go b/src/pkg/os/file_windows.go
index 81fdbe3..bdb5d1d 100644
--- a/src/pkg/os/file_windows.go
+++ b/src/pkg/os/file_windows.go
@@ -180,12 +180,12 @@
 				}
 			}
 		}
-		var f FileInfo
-		setFileInfo(&f, string(syscall.UTF16ToString(d.FileName[0:])), d.FileAttributes, d.FileSizeHigh, d.FileSizeLow, d.CreationTime, d.LastAccessTime, d.LastWriteTime)
 		file.dirinfo.needdata = true
-		if f.Name == "." || f.Name == ".." { // Useless names
+		name := string(syscall.UTF16ToString(d.FileName[0:]))
+		if name == "." || name == ".." { // Useless names
 			continue
 		}
+		f := toFileInfo(name, d.FileAttributes, d.FileSizeHigh, d.FileSizeLow, d.CreationTime, d.LastAccessTime, d.LastWriteTime)
 		n--
 		fi = append(fi, f)
 	}