Split the scheduler into sub-schedulers

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
Merge "Split the scheduler into sub-schedulers"