fstest regression fixes - POSIX error codes.
Deal with most of the issues found by FreeBSD's fstest regression test:
* Limit path components to 255 characters. Return ENAMETOOLONG if
the limit is exceeded.
* Return EEXIST, EINVAL, and ENOTEMPTY as appropriate when the user
attempts to create, delete, or rename "." or "..", instead of EINVAL.
* Return EISDIR if an attempt is made to open a directory for writing,
instead of EINVAL.
* Return EACCES if an attempt is made to open a file O_TRUNC without
O_RDWR or O_WRONLY, instead of silently dropping the O_TRUNC.
* Implement O_NOFOLLOW semantics generally instead of just with O_EXCL.
Not dealt with:
* DragonFly clears SGID AND SUID on uid or gid change, if not root.
If root is doing the operation SGID/SUID is not cleared.
* HAMMER cannot modify the ctime without rolling a new inode, which
is very expensive, and does not do so when entries are added or
removed from a directory. mtime is modified.