Added implementation for an executor that only allows tasks to be executed at a given rate.
Unlike the ExecutorLimiter, instead of limiting based off concurrency, it schedules out tasks based off a rate (so lots of tiny tasks could run in parallel, but one large task may have to run in isolations).
I decided to squash all the commits in this merge.  Originally this was going to be in the 1.3.0 release, but I decided it makes more sense to go with the 2.0.0 release.  This includes the implementation and all the unit testing for this new feature.
Merge pull request #84 from jentfoo/RateLimitingExecutor

Adding RateLimitingExecutor to 2.0.0-SNAPSHOT branch