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
I would love it if you made the syntax to use this work like ```defer util.Until(f, d).Stop()```