HPCC-8498 In roxiemem, check that pointer being linked/released is in the heap

Previously, linkRoxieRow and releaseRoxieRow would core when passed an
invalid pointer.

With this change, we treat any pointer that was not allocated in the Roxie
heap as (in effect) pointing to 'infinitely linked' data, which means we can
pass constant rows around without having to first clone them.

Moving the code out of the header has prevented gcc from inlining it, which
appears to make Roxie faster (probably because the code stays in the cache
more often). Replacing the NULL check with a test against the range of the
Roxie heap appears to have no significant impact on performance.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Merge pull request #3948 from richardkchapman/roxiemem-rangecheck

HPCC-8498 In roxiemem, check that pointer being linked/released is in t...

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>