Manage stats ticker at buckets level.

Instead of creating it and tearing it down in the goroutine, pass in
the time source as part of the structure.  Also, use the time sent
across the ticker instead of time.Now().  Together, these remove all
concepts of time from the toplevel buckets.

Notice I also removed the teardown code from here.  It was not
possible to ever actually be invoked, as the only possibility was to
close b.statsch, which doesn't happen.  This isn't a problem in
general, but it does make a bit of a mess in the tests, so we should
probably clean this up, too.