ensureRunnerScript() memoized the staged runner path in a module-level
RUNNER_SCRIPT_PATH and returned it on the warm path with no existence
check, defeating the cold path's own self-heal. If the tmpdir cache
(os.tmpdir()/omp-<lang>-runner) was cleared mid-session (e.g. a macOS
periodic clean_tmps sweep), the process kept handing out a path to a
deleted file and every later Python/Julia/Ruby kernel start failed to
spawn until restart.
Extract the three copy-pasted ensureRunnerScript implementations into a
single stageRunnerScript helper that re-checks fs.existsSync before
reusing the memoized path, so a swept runner is re-staged on the next
call. Route the Python, Julia, and Ruby kernels through it.
Fixes#8140