HPCC-12046 Refactor statistics

This is an initial version of my statistics rewrite, pushed for review.  It is functional, but there are a few changes that I would like to make before it is merged.  However it would be very useful to have feedback on the approach/functionality/implementation.

There is a fairly large comment in workunit.hpp which describes the new mechanism, which should help understanding what I have done.  I have only changed hthor so far to create the new progress information.

The following work still needs to be done:
 Ensure that hthor/thor/roxie create consistent stats (e.g, on activities, on edges)
* Add a short-circuiting filter on scope (using min/max) for a subgraph
* Switch to using a hash table for building up the activity stats.
* Store statistics as a value array instead of CInterface derived object
* Check that using an atom table is sensible, and if so should it be a private one?

Side effects of updating parent in a dispose seems a little odd. If updating the parent is the entire purpose of creating one of these objects, fine (but in that case I'm not sure that this object should be a linked object, since in effect that means "I don't know when the actual update of the parent is going to happen". At the very least perhaps the name of the class and/or a comment should be indicating what is going on.