Simplify use of cache_inode_rename

Callers should let cache_inode_rename, and ultimately FSAL_rename do the
checking of various things. This allows checks for things like empty
directories before overwrite to be done by the actual atomic operation
and not dependent on our cache.

Trim down when cache_inode_rename holds content_lock.

Also, for NFS v3, we do the get post op attr in the operation rather than
burdening cache_inode_rename with it.

All callers of cache_inode_lookup_impl needed to take content_lock around
the call. Instead of making callers do it, push the lock/unlock into
cache_inode_lookup_impl.

If todir/newname exists, we handle removing the cache entry AFTER the
FSAL_rename code, rather than using cache_inode_remove. This makes the
operation more atomic.

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>
Fixup some error translations

New error: CACHE_INODE_BADNAME

ERR_FSAL_ISDIR -> CACHE_INODE_IS_A_DIRECTORY
ERR_FSAL_ISDIR -> STATE_IS_A_DIRECTORY

CACHE_INODE_BADNAME -> STATE_INVALID_ARGUMENT
CACHE_INODE_BADNAME -> NFS4ERR_BADNAME
CACHE_INODE_BADNAME -> NFS3ERR_INVAL (v3 doesn't have BADNAME)
CACHE_INODE_BADNAME -> NFSERR_IO (v2 doesn't even have INVAL)

In nfs4_sanity_check_FH, if required_type is DIRECTORY, return
NFS4ERR_SYMLINK or NFS4ERR_NOTDIR as appropriate.

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>
TEMP

Signed-off-by: Frank S. Filz <ffilz@us.ibm.com>