HPCC-12662 Add single threaded version of IBitSet

The pre-existing version protects against any concurrent access
to set/gets for any bit by any thread.
It also uses a flexible/expanding Array for storage.

The version introduced in this commit, is not thread safe,
however it is optimized for speed.
In the form that is given a fixed lump of memory to work with,
it will not expand, but allow concurrent access to the
underlying storage safely, with the prerequisite that threads
do not manipulate the same bits_t space concurrently.
The particular use case it was introduced for, is the CMarker in
lookup join. Using this implementation without locks, allows the
CMarker to sometimes run approximately a 100 times faster.

This change also fixes a bug in the pre-existing IBitSet
implementation, in IBiset->incl(). If the include range started
beyond the existing width of the bit set, the implementation
incorrectly added set range values to the tail of the bitset,
as opposed to pre-padding the bitset up to the start point.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
HPCC-12662 Miscellaneous changes

1) Rename existing IBitSet factory to createThreadSafeBitSet
2) Change base CBitSet*Helper::getBits to return const copy
3) Fix typo causing compile error in Windows
3) Other minor changes.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
HPCC-12662 Further fix to IBitSet::incl()

And add a unittest.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Merge pull request #6721 from jakesmith/hpcc-12662

HPCC-12662 Add single threaded version of IBitSet

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>