time: add Timer.Reset

Fixes #4412.

R=adg, rsc, rogpeppe, andrewdg, bradfitz
CC=golang-dev
https://golang.org/cl/7086050
diff --git a/src/pkg/time/sleep_test.go b/src/pkg/time/sleep_test.go
index e05773d..3e4b6c0 100644
--- a/src/pkg/time/sleep_test.go
+++ b/src/pkg/time/sleep_test.go
@@ -245,3 +245,27 @@
 	}
 	<-c
 }
+
+func TestReset(t *testing.T) {
+	t0 := NewTimer(100 * Millisecond)
+	Sleep(50 * Millisecond)
+	if t0.Reset(150*Millisecond) != true {
+		t.Fatalf("resetting unfired timer returned false")
+	}
+	Sleep(100 * Millisecond)
+	select {
+	case <-t0.C:
+		t.Fatalf("timer fired early")
+	default:
+	}
+	Sleep(100 * Millisecond)
+	select {
+	case <-t0.C:
+	default:
+		t.Fatalf("reset timer did not fire")
+	}
+
+	if t0.Reset(50*Millisecond) != false {
+		t.Fatalf("resetting expired timer returned true")
+	}
+}