I really, really, did not want to implement a future in the PriorityScheduledExecutor due to performance compromises.  But I realize that there is a use case for it.  So I am adding a couple functions that take that performance hit for when it is useful.  Otherwise if not you can use the faster implementation.
Added unit tests for new coverage
Couple small tweaks after looking over the diffs
Renamed tests and added a small unit tests
More unit tests, although they don't all currently work
Got these tests working, was happy to see it was not an issue TestablePriorityScheduler