Extract shared CPU batch-output allocator into nodes/batch_output.py.
Replace the fixed 8 GiB in-memory cap with a dynamic reserve based on
system total RAM:
reserve = clamp(total_RAM * 25%, 1 GiB, 8 GiB)
The allocator checks psutil.available RAM at allocation time and falls
back to disk-backed mmap only when the complete output batch would
cross the reserve. GPU outputs keep their separate 8 GiB VRAM guard.
Migrated RTX Upscaler & Refiner and Watermark Overlay to the new helper.
Updated documentation and added targeted tests.