cf-upgrade should not close STDOUT of all forked commands

Now both STDOUT and STDERR of forked commands go to STDOUT and STDERR of
cf-upgrade. Previously it was just closed and e.g. dpkg was failing
because of that.

Modify the test scripts to actually test that.
The man page for dup, dup2 and dup3 says:
```
 dup2() makes newfd be the copy of oldfd, closing newfd first if
 necessary, but note the following:

  * If oldfd is not a valid file descriptor, then the call fails, and
    newfd is not closed.

  * If oldfd is a valid file descriptor, and newfd has the same value
    as oldfd, then dup2() does nothing, and returns newfd.

 After a successful return from one of these system calls, the old and
 new file descriptors may be used interchangeably.  They refer to the
 same open file description (see open(2)) and thus share file offset
 and file status flags; for example, if the file offset is modified by
 using lseek(2) on one of the descriptors, the offset is also changed
 for the other.

 The two descriptors do not share file descriptor flags (the
 close-on-exec flag).  The close-on-exec flag (FD_CLOEXEC; see
 fcntl(2)) for the duplicate descriptor is off.
```

Our process's stdout is now the file that fd is writing to.
The file descriptor that stdout used to point at is now closed.
So the process that fired off ours sees the stream it created for us to use as stdout closed.
Our process still sees a perfectly good stdout to which to write, but it's not the same thing.

I'm not sure I understand this fix or the problem it's described as fixing, but the above facts clearly have something to do with the matter !