Now that we don't accept a period of zero, we don't need this fairness in PriorityScheduler
Previously if the delay was less than zero, we would set it to zero to ensure that a given task would not dominate the pool.  We now match the behavior of java.util.concurrent.ScheduledThreadPoolExecutor in that if the recurring task is taking longer to execute than it's period, it will cut in line and get a thread more aggressively than others.
This also expands the unit tests a little