Don't grant a delegation when there is a conflicting open

The current code grants a delegation even though there are some opens
that conflict with granting the delegation. Possible rationale for this
omission is incorrect thinking that underlying FSAL, supporting the
delegation, would detect this and prevent us getting the lease lock.

Since we will have only one outstanding open call with FSAL, the first
call to acquire the lease lock for a write delegation will succeed even
if other NFS clients had opened the file for read or write.

We use cache_entry_t's share_state to know the number of prior read
opens and write opens to detect a conflict. If granting a delegation
would conflict with existing prior opens, we simply don't grant
delegation.

Signed-off-by: Malahal Naineni <malahal@us.ibm.com>
Acked-by: Frank S. Filz <ffilzlnx@mindspring.com>
Acked-by: Venkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com>