This makes the file descriptors on unix platform non-inheritable by default
(O_CLOEXEC). I have also added a file open flag F_Inheritable to override this
behavior if necessary. If the platform supports O_CLOEXEC flag, we will use it
to set the descriptor flag during open(2). If the flag is not available, we will
revert to the (racy) fcntl(2) call.
There is no change in behavior on windows, as the handles were already
non-inheritable by default (but one can still use the new flag to make them
inheritable).
In general, please add && "something useful" so that people who trigger this assert have a chance to know what went wrong.