The logic used to determine whether to invoke the in-memory registration or to
delegate the loading of a library is incorrect for xcframework packages - as
these can contain either static or dynamic libraries.
This change instead lets the operating system handle the library request, and if
it fails, it attempts to load from the internal registry.
With this change, xcframeworks containing dynamic libraries work without
workarounds on iOS.
With an additional fallback case courtesy of @bruvzg
This fixes https://github.com/godotengine/godot/issues/112783
- Implements the concept of GDExtension loaders that can be used to customize how GDExtensions are loaded and initialized.
- Moves the parsing of `.gdextension` config files to the new `GDExtensionLibraryLoader`.
- `GDExtensionManager` is now meant to be the main way to load/unload extensions and can optionally take a `GDExtensionLoader`.
- `EditorFileSystem` avoids unloading extensions if the file still exists, this should prevent unloading extensions that are outside the user project.