Use a processing queue to avoid race conditions while saving state

This will reduce chances of accidental clobbering of saved state data,
as well as reduce the number of times that state data is pushed to the
server.
We don't need to set the task back to incomplete when restarting
Persist the best reputation earned on a task