Address FIXME of _open(); a catch-all ENFILE was returned for any
failure leading into newfile() (parent == NULL), or within newfile()
(and its supporting routines, such as i_open() and ch_link()).
Instead, newfile() uniformly detects and sets errors (or lets errors
from supporting routines propagate upward). _open() is restructured
to leave udata.u_error as set by newfile(), and thus permit the
actual error code to reach the user.
"touch /x" when you don't have write access to "/" will thus now get
EPERM, not ENFILE.