This fixes a bunch of cases where a timeout in the test would leak a goroutine.
These methods can be helpful when migrating existing timer code.
This change adds tests for the virtual clock and aligns the interface with the time package by renaming Cancel to Stop. It also removes the binary search from Stop because it complicates the code unnecessarily.