Android: Allow third-party plugin registration

This change decouples the specific order and names of filesystem
instances from the FileUtils and LocalFilesystemURL classes.
Add backwards-compatibility shim for file-transfer

Since file-transfer constructs its own FileEntry objects, we cant change the return values of getEntry so much.
Fix typos in deprecation message
Android: Expose filePlugin getter so that other plugins can register filesystems
iOS: Android: Allow third-party plugin registration
iOS: Add config preference for iOS persistent storage location
CB-5916: Android: Add config preference for Android persistent storage location
CB-5915: ios: Update config preference (and docs) to match issue
CB-5916: Android: Add "/files/" to persistent files path
CB-5916: Android: Fix unfortunate NPE in config check
CB-5915: Create documents directories if they don't exist
CB-5916: Create documents directories if they don't exist
Fill out filesystem attribute of entities returned from resolveLocalFileSystemURL
Add constuctor params to FileUploadResult related to CB-2421
CB-5899: Make DirectoryReader.readEntries return properly formatted Entry objects
Add default FS root to new FS objects
Merge branch 'dev' of github.com:Zaspire/cordova-plugin-file into dev
CB-5960: ios: android: Properly handle parent references in getFile/getDirectory
CB-5974: Android: Don't allow File operations to continue when not configured
CB-5915: CB-5916: Reorganize preference code to make defaults possible