Fix issue #13100 - std.process.setCLOEXEC() throws

There are two cases in which the fcntl() calls may fail:
  1) the file descriptor is invalid, in which case errno == EBADF,
  2) they receive invalid input, in which case errno == EINVAL.
We don't want to throw in the former case, as evidenced by the bug
report, and the latter means that we have an error in std.process,
which is best handled by an assertion.