Add a util.Forever variant that ends on a stop channel

Integration tests that want to run controllers today are putting controllers into
infinite loops with go util.Forever.  util.Until will allow test cases to stop a controller
after a test ends
Something like this should take care of it, no?

```
type stopper chan struct{}
func (s stopper) Stop() { close(s) }

func Until(f func(), period time.Duration) stopper {
  ...
  ch := make(stopper)
  ...
  return ch
}
```