Add ServiceWrapper for SingleThreadScheduler

This solves #82, now that we had another scheduler implementation I thought it would be a good idea to be able to wrap it and use it as a ScheduledExecutorService (just like you can with the PriorityScheduledExecutor).

Along the way, we got some unit test improvements (that I had missed), and fixed some small issues in the SingleThreadScheduler.