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?

If I'm reading the code correctly, the object in question is returned to an outside caller when they call CConstGraphProgress::update. Meaning bad things will happen if they release that object after they release the IConstWUGraphProgess that asked for it...