AsyncHttpClient/async-http-client — pull request #336 by mgreene (2013-07-10 15:42:38+00:00)
Title: Add a rate limited request filter

### Purpose
While having the `ThrottledRequestFilter` providing a concurrency limit and implicit back pressure into the caller, another gauge would be helpful in fine tuning request speed. I've added the ability to specify the number of requests per second in addition to the number of concurrent requests allowed at any given time.

### Implementation Decisions
* I've utilized Guava's `RateLimiter` to do most of the work
* With regard to the `maxWait` argument found in the `ThrottledRequestFilter`, I decided to keep with that theme. Given that both the semaphore and the rate limiter perform a `tryAcquire()`, I've decided to split the `maxWait` across both of those operations. So if you provide a `maxWait` of `1000` ms, the algorithm will reduce any ms spent in the semaphore acquisition and pass that reduced amount into the rate limiter's `tryAcquire`.
* I've bumped the Guava version to 14.x, I did not notice any class loading issues in my testing.