Spawns a new process progargs and returns a handle to it. args should either be
a) a list or arguments (including the name of exectuable as the first argument)
b) any number of strings arguments (in which case the name of the executable is taken from prog
The returned handle is a IO.Socket.T, connecting to the input and output of the spawned process.