HPCC-8992 - Various problems in key sampling used by merge

1) split() caused a filepos to be lost - it was added before
split and key row after

The effect of this was a array.isItem assert - and the
cause of HPCC-8992 report.

2) the sampling (index%divisor stuff) was basically broken

It would have meant the partitioning would have skewed
toward the end of the set being sampled.

3) expandfpos was adding an extra erroneous filepos when it
initialized (had <= in loop when should have been <).

I suspect this would have caused problems if the 1st row of the
sample were fetched.. (it would probably serialize wrong row)

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
Ensure no overflow when calculating fpos
Merge pull request #4162 from jakesmith/hpcc-8992

HPCC-8992 - Various problems in key sampling used by merge

Reviewed-By: Gavin Halliday <gavin.halliday@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>