Upgrading unstable_staging to be the new 2.0.0 branch (release date TBD)

I know this is a lot of change...I don't expect this all to be actually code reviewed (in fact I plan to merge it after cloudbees says it is good to merge).  But I wanted to bring more visibility to these changes (if any are interested).

Notable changes so far:
* Added new interface SchedulerServiceInterface, which includes the isShutdown call, and the calls to remove tasks...that means isShutdown has been removed from lower interfaces (which are focused on execing out now).  The PrioritySchedulerInterface extends this interface now.
* NoThreadScheduler became simpler, and it's unit tests features are now moved into TestableScheduler
* Added SingleThreadedScheduler...this change went with the above one.  This allows a threadly implementation that is a light weight single threaded scheduler that implements the new SchedulerServiceInterface
* Deprecated features have been removed/cleaned up
* Trying to improve unit tests, both in coverage, as well as reduced duplication.  Issue #76 is filed because this is far from complete.  I really want to work on making unit tests cleaner and more uniform somehow.  But I at least got coverage on all the changes for now (and am currently erring on redundant testing as described in #76)