Silence some tests that hit $=.
Do an early check for empty command line in spawn logic.

On MRI, because they fork first and then look for executables,
call exec, etc, they are able to properly return ENOENT back to
the parent process. It appears, however, that posix_spawn (the
function we are using) sometimes (e.g. on Linux) does not
propagate ENOENT from a bad command line back to the parent.
Instead, we get a defunct process that's on its way to death and
no other indication that the exec half of posix_spawn has failed.

We may need other checks like this to ensure we're catching bad
executables, but for now I'm just adding the empty command line
check where needed.
Fix a path that did not have our special sh-based chdir handling.
Only set eargp.argv_buf if we find arguments.

I believe this matches the intend of the argv_buf *string* in MRI
better than us always putting at least an empty list (there are
null checks, etc, that change behavior if no argv can be found).