Numerous changes to support using Deferred.notify and Promise.progress.