Reworked the event registration model of the ProcessController class.
Previously, a specialized callback function of type (string s, double d) => { ... } needed to be passed to the AnalyseAllDocumentsAsync method. This was inflexible and did not match the standard event pattern used by the .NET framework.
Under the  new model the ProcessController class inherits from Progress<Report>, where Report is a struct with 2 properties : string Message and double Increment. Event handlers now may be attached and removed as needed.
The signature of handlers is now
(object sender, Report e) => { ... }
or
async (object sender, Report e) => { ... }.
These changes improve the flexibility and reliablity of the document processing pattern and better conform to the patterns of event handling in the .NET framework.