private static final class Task.ProgressUpdate
A struct like class that contains the last workDone update information.
What we do when updateProgress is called, is we create a new ProgressUpdate
object and store it. If it was null, then we fire off a new Runnable
using RunLater, which will eventually read the latest and set it to null
atomically. If it was not null, then we simply update it.