Cleanup FuseDaemon properly when it exits

When vold unmounts a volume, the FuseDaemon exits and the
ExternalStorageService is unaware of that state change. This causes
the FuseDaemon to hang on the next mount with the same sessionId.
Now, we notify the ExternalStorageService when the FuseDaemon exits.

Also, since the /storage paths are bind mounts of the lower
filesystem, we simplify the FuseDameon code by passing only the upper
filesystem path (/storage/...) to libfuse. And all paths the FUSE
kernel driver can be directly accessed without any translation or
mapping to a lower filesystem path.

Minor code cleanups, fixed TODOs, improved logging and some clang-tidy

Bug: 135341433
Test: adb shell ls /sdcard when the FUSE property is turned on

Change-Id: I9589e61636c13a6d5c8a18aba39762497fdc18c3
5 files changed