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?

elsewhere I think we follow the convention that a getXXX that returns a linked object, returns a pointer not a reference ?

So that you can do :
```
Owned<type> = getXXX(); 
```
rather than : 
```
Owned<type> = &getXXX();
```