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?

Yes, I agree it is a little odd.
It means update the parent when the last reference to this object is released.

It was modelled on the existing progress->update() function which creates a CGraphProgress in exactly the same way.