Lots of changes!  All things for 2.0.0 due to interface changes
This adds the remove to the interfaces via a new interface 'SchedulerServiceInterface'.  This interface now includes the isShutdown call.
This also changes the NoThreadScheduler.  Now that functionality exists as a "TestableScheduler", and the NoThreadScheduler is designed to be more general use designed (no ability to provide time via tick).  This allows the implementation of the new SingleThreadedScheduler.

In addition there were lots of unit test changes.  Attempting to make things more uniform.  Stop assuming that things are not overriden in classes (in favor of testing them twice in case they change in the future).  This is still not completely uniform, but I think it's better.  I also _tried_ to reduce the code duplication in a few places in the unit tests.