Add a rate limiter, use it to rate limit docker pulls.

I think that this does actually work, but I restructured the code to make it clearer.  This is the suggested way of accomplishing this, see the time.Second*time.Duration(10) example here:

http://golang.org/pkg/time/#Duration