Instead of having a larger scheduler class that contains
logic for both the retry routine and the task routine split
this into two classes and have the scheduler class use those
sub-schedulers for internal scheduling.
Change-Id: I6309a5fd172d5b20a01a2ba8b3e4cf8512d085fb