os: delete Exec, NewFile takes uintptr, rename ShellExpand, doc fixes

Delete O_NDELAY, O_NONBLOCK, O_NOCTTY, O_ASYNC.

Clean up some docs.

Rename ShellExpand -> ExpandEnv.

Make NewFile take a uintptr; change File.Fd to return one.
(for API compatibility between Unix and Windows)

Fixes #2947

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5655045
diff --git a/src/pkg/net/fd.go b/src/pkg/net/fd.go
index 2352d22..607a6c1 100644
--- a/src/pkg/net/fd.go
+++ b/src/pkg/net/fd.go
@@ -228,7 +228,7 @@
 			s.CheckDeadlines()
 			continue
 		}
-		if fd == s.pr.Fd() {
+		if fd == int(s.pr.Fd()) {
 			// Drain our wakeup pipe (we could loop here,
 			// but it's unlikely that there are more than
 			// len(scratch) wakeup calls).
@@ -295,7 +295,7 @@
 	if raddr != nil {
 		rs = raddr.String()
 	}
-	fd.sysfile = os.NewFile(fd.sysfd, fd.net+":"+ls+"->"+rs)
+	fd.sysfile = os.NewFile(uintptr(fd.sysfd), fd.net+":"+ls+"->"+rs)
 }
 
 func (fd *netFD) connect(ra syscall.Sockaddr) error {
@@ -382,7 +382,7 @@
 		return 0, os.EINVAL
 	}
 	for {
-		n, err = syscall.Read(fd.sysfile.Fd(), p)
+		n, err = syscall.Read(int(fd.sysfile.Fd()), p)
 		if err == syscall.EAGAIN {
 			if fd.rdeadline >= 0 {
 				pollserver.WaitRead(fd)
@@ -476,7 +476,7 @@
 	nn := 0
 	for {
 		var n int
-		n, err = syscall.Write(fd.sysfile.Fd(), p[nn:])
+		n, err = syscall.Write(int(fd.sysfile.Fd()), p[nn:])
 		if n > 0 {
 			nn += n
 		}
@@ -615,7 +615,7 @@
 		return nil, &OpError{"setnonblock", fd.net, fd.laddr, err}
 	}
 
-	return os.NewFile(ns, fd.sysfile.Name()), nil
+	return os.NewFile(uintptr(ns), fd.sysfile.Name()), nil
 }
 
 func closesocket(s int) error {
diff --git a/src/pkg/net/file.go b/src/pkg/net/file.go
index 901b856..f9546dc 100644
--- a/src/pkg/net/file.go
+++ b/src/pkg/net/file.go
@@ -12,7 +12,7 @@
 )
 
 func newFileFD(f *os.File) (*netFD, error) {
-	fd, err := syscall.Dup(f.Fd())
+	fd, err := syscall.Dup(int(f.Fd()))
 	if err != nil {
 		return nil, os.NewSyscallError("dup", err)
 	}
diff --git a/src/pkg/net/newpollserver.go b/src/pkg/net/newpollserver.go
index 06bc24c..d34bb51 100644
--- a/src/pkg/net/newpollserver.go
+++ b/src/pkg/net/newpollserver.go
@@ -18,16 +18,16 @@
 	if s.pr, s.pw, err = os.Pipe(); err != nil {
 		return nil, err
 	}
-	if err = syscall.SetNonblock(s.pr.Fd(), true); err != nil {
+	if err = syscall.SetNonblock(int(s.pr.Fd()), true); err != nil {
 		goto Errno
 	}
-	if err = syscall.SetNonblock(s.pw.Fd(), true); err != nil {
+	if err = syscall.SetNonblock(int(s.pw.Fd()), true); err != nil {
 		goto Errno
 	}
 	if s.poll, err = newpollster(); err != nil {
 		goto Error
 	}
-	if _, err = s.poll.AddFD(s.pr.Fd(), 'r', true); err != nil {
+	if _, err = s.poll.AddFD(int(s.pr.Fd()), 'r', true); err != nil {
 		s.poll.Close()
 		goto Error
 	}
diff --git a/src/pkg/net/sendfile_linux.go b/src/pkg/net/sendfile_linux.go
index 7f51519..ab3a381 100644
--- a/src/pkg/net/sendfile_linux.go
+++ b/src/pkg/net/sendfile_linux.go
@@ -42,7 +42,7 @@
 	defer c.decref()
 
 	dst := c.sysfd
-	src := f.Fd()
+	src := int(f.Fd())
 	for remain > 0 {
 		n := maxSendfileSize
 		if int64(n) > remain {