[issue #21] added ProgressObservable class so that components may indicate that they can propagate progress