RF: Fix logging under Python 3.14
The logging configuration was broken under Python 3.14 - multiprocessing now uses the 'forkserver' startup method by default, whereas I was relying on the previous default of 'fork', which propagated the SocketHandler objects to the child processes via memory inheritance.a Handlers are now re-created in child processes both when running tests locally and remotely.
This MR also adds a few new small utility functions:
-
indir- a context manager which temporarily changes into a directory -
runcmd- A function which runs a shell command and returns its standard output