Fix incorrect behaviour due to too much cached state in Sidekiq::RateLimiter::Fetch.

Fetch was storing memoized rate data across jobs, causing rates specified for one job to be applied to another. Fixed this by factoring out a Rate class that can be used to store memoized rate data for each job that Fetch processes, before being discarded.