HPCC-11693 Catch and handle OOM and failover when setting up HT

If it manages to avoid OOM on gather, but OOM's setting up sized
HT, then catch OOM exception coming back from roxiemem and let
it degrade to distributed local lookup join.

Signed-off-by: Jake Smith <jake.smith@lexisnexis.com>
If table.setup() used the version of allocate which supplied the maximum spill cost then you could prevent it spilling rows.

    virtual void *allocate(memsize_t _size, unsigned activityId, unsigned maxSpillCost) = 0;