Extended multiple screen API and other changes/cleanups

* Android & iOS: Screen hotplug events
* Android & iOS: Create additional windows on the first external screen
* Android: Add Java helpers for Presentation and DisplayListener classes
* Simulate frame time in cases where the OS doesn't provide it
* Use a dummy pbuffer or surfaceless context so OpenGL functions work if no window surfaces exist
* INSTALL doc clarifications
* Improved custom assert() handling
Convert all app callbacks except Base::onInit to DelegateFunc
Changes to Screen and Window classes

* Android: Simplify window resize code by using the underlying View's size, not the native window's
* Android: Fix some issues and unify code between Presentation and main window handling
* Add height & width functions to Screen
* onSurfaceChange callback can separately specify if the surface resized and/or the content rectangle changed
Add Apple Game Controller framework support for iOS
Changes/Refactoring to Window class

* Refactor OpenGL context into separate class managed outside window system
* Add configuration attributes to Window init method (preferred position, size, GL surface format, etc.)
* Add delegates for window dismiss actions
* Remove API for swap intervals and replace with per-screen frame intervals
* Share common EGL code between ports
Refactor EmuFramework video code and add FBO support

* Add EmuVideoLayer class for moving video output between multiple EmuViews
* Render hq2x effect into a properly sized FBO used as a texture for accurate output
* Embed viewport data into ProjectionPlane
* Embed ProjectionPlane into Views instead of using global
* Pass ProjectionPlane to text rendering function instead of using global
Remove custom memory allocations for GUI objects
Integrate CD changes from Mednafen 0.9.36.1 and fix loading stand-alone .iso or .bin images
Add option to toggle external screen behavior and fix some multi-window/screen issues
Make all frame update code event-based and take advantage of asynchronous buffer swaps
File-system changes & fixes

* Rename FsSys::cPath to FsSys::PathString and change type to std::array for use as a function return value
* Add WRITE_MEDIA_STORAGE when generating AndroidManifest.xml in case the OS recognizes it to allow additional write access
* Add EmuFramework Default save path option based on the system-specific storage path, and check for read-only save paths while falling back to the default if needed
Add iOS arm64 support and update some bundled packages
iOS updates and other fixes

* Combine iOS regular and jailbreak builds, behavior is now based whether the app running from the system /Applications path
* Update BTstack to r2694
* Add Library/Preferences as valid path to fixMobilePermission helper app
* Use ASL for logging on iOS
* Don't use scaling for over-scan compensation on iOS screens
* Set 720p mode on iOS screens reporting 1600x900 size (Lightning Digital AV Adapter) to avoid performance issues
* Fix OpenGL ES 1.x build