Fix for a found bug with recurring tasks on the NoThreadScheduler/SingleThreadScheduler

If you have a recurring task with zero delay (so it just keeps running over and over again), it would inject itself ahead of any .execute() runnables provided before the recurring task would complete.  This was due to the fact that we were attempting to avoid two reposition calls by repositioning the recurring task at the start rather than the end.  In the PriorityScheuledExecutor this is not an issue, because we reposition to the end, then once done we reposition again.  I would like to avoid that here, since we know that only one task may be running at a time.  So instead we now reposition at the end, but will mark the task as "running" while it is executing so that we know to not include it in calls to check if we have additional tasks to call.
I added a unit test that reproduced this case, and is now passing with this fix.  I also added and improved the javadocs for this change.

I will comment on the interesting points in the code.