Avoid creating zombies with `buck run`
Avoid creating zombies with `buck run`

Summary:
`scribe_cat` becomes a zombie and is never collected until `buck run` exits and then the zombie is collected using the standard reparenting to init.This fixes it.
This does a standard double fork to avoid it.
Initially I dug in because I have around a hundred of zombie processes on my devserver which are part of normal operation.
It might be only the first step in getting rid of them, as I yet didn't dig into if `arc` uses `buck` to launch those services, or it has a similar bug of its own.

Python version compatibility is changed. We seem not to have python < 3.5 (subprocess.run was added in 3.5, https://fburl.com/v4cisdom) any more.

For context:
Those zombie processes are `scribe_cat`: P275918707
pstree of the first `scribe_cat` zombie:
`systemd(1)───arc2.real(40927)───python3.8(40948)───scribe_cat(40973)`
that's a common pattern across the zombies, it's launched by arc, and runs some service to support vscode,
`cat /proc/40948/cmdline`:
`[xarexec] /home/mkutsevol/.cache/dotslash/obj/everstore/70/GICWmACVH-gwu0AKAKe1Ck8kbFAublMqAAAA/extract/tar.gz/pyfmtd.linux-tt/mnt/xarfuse/uid-232357/dead78d5-seed-nspid4026531836-ns-4026531840/__run_xar_main__.py--port37757--hostlocalhost` - this is pyfmt server.

Reviewed By: lebentle

fbshipit-source-id: bf3fbee80ec5829fa5171e1f799c2a6f1b7b2d6e

JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck,JoelMarcey/buck