Change IProgressReport to contain a Message of a generic type.

Backward compatible
`IsNullOrEmpty` should at least be a static, and maybe best would be to put it in a static helper class named appropriately.