Improves performance in the PriorityScheduler with low priority tasks.
This makes it so that the first low priority task does not have to wait the max low priority time to get a worker.  In addition it has a slightly simpler code path if the opposite is true (the pool has reached the max size).  Both providing a performance increase.
This was found from hunting down slow running unit tests.  Because of that there were unit test changes as well, including new test to cover the functionality above.  As well as changing a couple small things to try to get the unit tests to run slightly faster (hopefully without causing them to be unstable on EC2).