Starts to address #2039
Move FileProvider back to Keyman manifest and revert authority.
Added Toast notification if 3rd party app doesn't define FileProvider. (info pages fail to properly load)
Currently, the app name briefly flickers when ConfirmDIalogFragment finishes.
These changes make the flicker less noticeable:
* Set the app name blank in the Manifest
* Dismiss the dialog fragment and finish the activity
Also updated ConfirmDialogFragment to have a flexible message body (second parameter)
* And updated gitignore to ignore artifacts from Android Studio's "Layout Inspector" tool
Add intent-filter and storage permissions so Keyman app will process keyman://, http://, https:// protocols, along with local KMP file. Also add external storage permission
For now, disable calls to `KMKeyboardDownloaderActivity.removeKEyboardDownloadEventListener()`. The parent activities will always pause when KMKeyboardDownloaderActivity runs, and we want the event handlers to trigger when the keyboards finish downloading.
Also fixed processing custom JSON to handle the JSONArray `languages`.
Currently in `KMManager`, there's 3 methods to download a `KMKeyboard` (2 in `KMKeyboardDownloader`, 1 in `KMCustomKeyboardDownloader`) for the 3 use-cases respectively:
1. Add new keyboard (from the cloud)
2. Update a keyboard
3. Install a custom keyboard
This PR refactors the following:
1. Code from `MainActivity.checkUrl()`, `KMManager.KMKeyboardDownloader()`, and `KMManager.CustomKeyboardDownloader()` into a new activity `KMKeyboardDownloadActivity`.
Code for doing actual file downloads are kept in an `AsyncTask`.
2. `FileDownloader` moved to a separate util class.
3. Confirmation dialogs for downloading keyboards are also refactored into `ConfirmDialogFragment`.