Move readdir decision-making to MediaProvider.

Directory entries are obtained from Media Provider database. If given
path is not indexed by MediaProvider database, MediaProvider redirects
readdir to lower file system. For app specific directories, directory
entries are obtained from lower file system but MediaProvider checks for
access permissions before redirecting the query to lower file system.

Bug: b/142857833
Bug: b/142806973
Bug: b/142475473
Test: ls /storage/emulated/0/ -R, Returns a list of files and directories
filtered based on the visibility of the app to the corresponding file/directory.
Test: atest -c testListDirectoriesWithMediaFiles
      atest -c testListDirectoriesWithNonMediaFiles
      atest -c testListFilesFromExternalFilesDirectory
      atest -c testListFilesFromExternalMediaDirectory

Change-Id: I3635e13f5c206111bcd90f994a0961a407980310
15 files changed