If pool is shutdown throw RejectedExecutionException instead of IllegalStateException
This is a better exception type for these conditions.  This also fixes a few small issues, allowing you to now still attempt to remove tasks even after the SingleThreadScheduler has been shutdown.