This makes more clear what fds are closed when, when you read
caller function code.
This is a preparation to not clobber fdp[] in the child, so that
we can switch to using vfork() in a later patch.
Add ///BUG comments:
(*) we wait() in writechild, thus, if write() in writing child blocks
waiting for decompressor to consume data, and decompressor blocks waiting
ofr _us_ to read its data, we would deadlock.
(*) we can't know that the child we spawned is the only running child
of the process. We should use waitpid() to wait specifically for
the child we need.