refactor isc_ratelimiter to use loop callbacks
the rate limter now uses loop callbacks rather than task events. the API for isc_ratelimiter_enqueue() has been changed; we now pass in a loop, a callback function and a callback argument, and receive back a rate limiter event object (isc_rlevent_t). it is no longer necessary for the caller to allocate the event.
the callback argument needs to include a pointer to the rlevent object so that it can be freed using isc_rlevent_free(), or by dequeueing.
Edited by Evan Hunt