Fix case-insensitivity on FUSE lookups

To enable case-insensitivity on FUSE lookups, we need to disable
dentry caching otherwise the following sequence of events can happen:

1. Create foo (lower case), causing lookup for foo and creating
a *new* node
2. Delete FOO (upper case), casuing the following:
2.i   Trigger a lookup because the kernel treats FOO as a new
dentry
2.ii  Unlink with the *new* node created in (2.i).
2.iii Forget the node from (2.i)
3. The kernel however still has a dentry in it's cache from (1).
4. Trying to create foo again will fail because the kernel still has
the dentry from (1) in it's cache.

Now, during lookup for a node with a different case than we have
already acquired, we will invalidate the previous node from the VFS
cache. This ensures that there is only ever *one* dentry matching a
name (regardless of case) in the VFS.

Unfortunately, we cannot invalidate a VFS dentry in the execution path
of a lookup, so we invalidate on a separate thread instead. This still
leaves some risk of a race when re-creating files with different cases
in quick succession. This however should not be a practical concern.

Test: atest FuseDaemonHostTest#testCaseInsensitivity
Bug: 153422292
Change-Id: Id45f2fe398e962ca0b16f41f628ad2fc5d849481
5 files changed