os: don't permit Process.Signal after a successful Wait

R=dsymonds, rsc
CC=golang-dev
https://golang.org/cl/4689043
diff --git a/src/pkg/os/exec_unix.go b/src/pkg/os/exec_unix.go
index cf5ea9b..8a4b2e1 100644
--- a/src/pkg/os/exec_unix.go
+++ b/src/pkg/os/exec_unix.go
@@ -38,6 +38,9 @@
 	if e != 0 {
 		return nil, NewSyscallError("wait", e)
 	}
+	if options&WSTOPPED == 0 {
+		p.done = true
+	}
 	w = new(Waitmsg)
 	w.Pid = pid1
 	w.WaitStatus = status
@@ -47,6 +50,9 @@
 
 // Signal sends a signal to the Process.
 func (p *Process) Signal(sig Signal) Error {
+	if p.done {
+		return NewError("os: process already finished")
+	}
 	if e := syscall.Kill(p.Pid, int(sig.(UnixSignal))); e != 0 {
 		return Errno(e)
 	}