Add a basic framework for performing long running operations in the background.

Executing threads may report back to provide pogress and/or status
information.