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

yeah, we should add richer errors here, esp. so we can try to actually run the container in some errors (e.g. network problem)