Fixed bug where long-running Read call would stop rate from updating.

- Because the rate was printed after the underlying Reader's Read method
  returned, if it blocked for a long time (or indefinitely), the previous
  rate would remain printed long after it was valid. The new version spawns
  a separate goroutine to handle this problem, and adds a Close method to
  the rateReader type, which instructs the goroutine to return. If the Read
  method returns an error, that will also cause the goroutine to be instructed
  to return.