Nikita Vetoshkin dbc7c2cf4e backend: reuse timer in run().
Benchmarks:

```
import (
	"testing"
	"time"
)

func BenchmarkTimeAfter(b *testing.B) {
	b.ReportAllocs()
	for n := 0; n < b.N; n++ {
		select {
		case <- time.After(1 * time.Millisecond):
		}
	}
}

func BenchmarkTimerReset(b *testing.B) {
	b.ReportAllocs()
	t := time.NewTimer(1 * time.Millisecond)
	for n := 0; n < b.N; n++ {
		select {
		case <- t.C:
		}
		t.Reset(1 * time.Millisecond)
	}
}
```

Running reveals that each loop results in 3 allocs:

```
BenchmarkTimeAfter-4 	    2000	   1112134 ns/op	     192 B/op	       3 allocs/op
BenchmarkTimerReset-4	    2000	   1109774 ns/op	       0 B/op	       0 allocs/op
```
2016-06-23 18:49:41 +05:00
..
2016-06-23 18:49:41 +05:00
2016-06-14 17:09:06 -07:00
2016-05-12 20:50:33 -07:00
2016-05-12 20:50:33 -07:00
2016-05-20 22:31:22 -07:00
2016-05-12 20:50:33 -07:00
2016-05-20 22:31:22 -07:00
2016-06-21 16:20:55 -07:00
2016-06-21 16:20:55 -07:00
2016-05-20 22:31:22 -07:00
2016-05-20 22:31:22 -07:00
2016-06-21 16:20:55 -07:00
2016-06-19 23:00:39 -07:00
2016-05-12 20:50:33 -07:00
2016-05-12 20:50:33 -07:00
2016-05-20 22:31:22 -07:00
2016-05-12 20:50:33 -07:00