1) Eliminate all of the null component name special cases; handle runs of
slashes and leading and trailing slashes completely differently.
2) Return ENOENT when doing a lookup through an empty symlink.
3) Enforce that we're doing a lookup through a directory in in chdir() and
lookup() rather than in foo_lookup().
Not yet finished.
(1) "" no longer refers to the current working directory;
looking this up will now result in ENOENT.
(2) by stripping off trailing slashes and setting a `forcedir'
flag, make code such as { mkdir("dir", m); rmdir("dir/"); }
actually work.
struct member cn_nameptr 'const', since they should never be used to
modify the path name. (Only the pathname buffer, cn_pnbuf, should be
modified.) Propagate the const poisoning to code that uses the namei
and componentname structs.