Move computation of progress percentage and detail

The progress reporter now consumes an interface so that the
computation of percentage and any progress details can be moved to the
implementation of the unit that is reporting progress.

This paves the way for reporting progress on tasks.