[WakeupStrategy] introduce a new class to model our wakeup strategies
Add new 'throttle' wakeup strategy inspired by the algorithm used by zap, go and tokio. This tries to prevent a possible thundering herd problem and reduce contention on the scheduler by only waking a single worker at a time. It further ensures that the next worker is only notified if the previous successfully found work.