time: add After

Permits one to easily put a timeout in a select:

select {
case <-ch:
	// foo
case <-time.After(1e6):
	// bar
}

R=r, rog, rsc, sameer1, PeterGo, iant, nigeltao_gnome
CC=golang-dev
https://golang.org/cl/2321043
diff --git a/src/pkg/time/sleep_test.go b/src/pkg/time/sleep_test.go
index 7ec6c49..4934a38 100644
--- a/src/pkg/time/sleep_test.go
+++ b/src/pkg/time/sleep_test.go
@@ -24,3 +24,15 @@
 		t.Fatalf("Sleep(%d) slept for only %d ns", delay, duration)
 	}
 }
+
+func TestAfter(t *testing.T) {
+	const delay = int64(100e6)
+	start := Nanoseconds()
+	end := <-After(delay)
+	if duration := Nanoseconds() - start; duration < delay {
+		t.Fatalf("After(%d) slept for only %d ns", delay, duration)
+	}
+	if min := start + delay; end < min {
+		t.Fatalf("After(%d) expect >= %d, got %d", delay, min, end)
+	}
+}