HPCC-9310 Results as spills

Inactive at the moment until codegen options changed.
This commits adds support for graph results used as spills.
The advantage is that that results are to memory and only spilled
on demand as memory pressure requires and it addressed an issue
where distribution as not maintained if a child query required
a 'result' that was a spill.

Broken into 3 commits to separate the noise from the real changes:
1)
There are quite a few auxiliary needed to utility classed to
avoid circular references. So that CThorGraphResult objects
can continue to reference a representation of the activity and
their utility objects, without link counting the original
activity and therefore the graphs those activities belong to.

2) Fix an issue serializing dictionary that are now stored as results between slaves and master.

3) Implement the job results container for spills

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Not directly related to this pull request, but, shouldn't CSingletonLock::lock recheck needlock after sect.enter?