Added an optimization for the ConcurrentArrayList reposition functionality.  This way when we reposition from either the front or end to the respective opposite, we may be able to avoid an array copy.
I implemented this as such so that we try to only do these extra checks if there is a possibility we can gain from the improvement (which makes the code slightly more complicated to look at, but should perform well).

I also fixed a unit test failure that could occur in the ClockWrapperTest
Removed the option to create a "non-thread safe" NoThreadScheduler.  The overhead of synchronizing is probably not a big deal if there is no lock contention, and this makes our unit tests and code quite a bit smaller and simpler.
In addition I improved the remove functionality to use the same remove logic that the PriorityScheduledExecutor was using (and thus traverse the containers if they exist)
More love for the NoThreadScheduler, better error checking to match the other schedulers.  Also added a unit tests, and fixed a bug where recurring tasks could not be removed while they were running.
Fix for synchronizing on the wrong object from my last push.

Renamed a few inner-classes for clarity
Some additional unit test coverage