Added a retry() method to Tasks

No more horrible switches on types. Polymorphism ftw.

If you are implementing a new task in the system, don't worry about what
DataManager dm is for the retry() method. UploaderService supplies it
when needed.