oci: Do not call the container runtime from ExecSync
oci: Do not call the container runtime from ExecSync

Some OCI container runtimes (in particular the hypervisor
based ones) will typically create a shim process between
the hypervisor and the runtime caller, in order to not
rely on the hypervisor process for e.g. forwarding the
output streams or getting a command exit code.

When executing a command inside a running container those
runtimes will create that shim process and terminate.
Therefore calling and monitoring them directly from
ExecSync() will fail. Instead we need to have a subreaper
calling the runtime and monitoring the shim process.
This change uses conmon as the subreaper from ExecSync(),
monitors the shim process and read the exec'ed command
exit code from the synchronization pipe.

Signed-off-by: Samuel Ortiz <0ba86cb3f08bbb861958e54bd3438887adb4263c@linux.intel.com>

14rcole/cri-o,mikebrow/cri-o,mheon/cri-o,mikebrow/cri-o,vbatts/cri-o,nalind/cri-o,intelsdi-x/cri-o,kubernetes-incubator/ocid,rhatdan/cri-o,sameo/cri-o,intelsdi-x/cri-o,aweiteka/cri-o,vbatts/cri-o,intelsdi-x/cri-o,sameo/cri-o,aweiteka/cri-o,mikebrow/cri-o,apilloud/cri-o,vbatts/cri-o,nalind/cri-o,14rcole/cri-o,kubernetes-incubator/ocid,umohnani8/cri-o,umohnani8/cri-o,jawnsy/cri-o,umohnani8/cri-o,apilloud/cri-o,apilloud/cri-o,rhatdan/cri-o,kubernetes-incubator/cri-o,jwhonce/ocid,jawnsy/cri-o,umohnani8/cri-o,jwhonce/ocid,mheon/cri-o,mikebrow/cri-o,14rcole/cri-o,kubernetes-incubator/cri-o,kubernetes-incubator/cri-o,kubernetes-incubator/cri-o,jawnsy/cri-o,rhatdan/cri-o,sameo/cri-o,rhatdan/cri-o,mheon/cri-o,nalind/cri-o,14rcole/cri-o,aweiteka/cri-o,kubernetes-incubator/ocid,jwhonce/ocid,vbatts/cri-o,mheon/cri-o