This implementation will not work atm.
We still need to implement a connection between the main thread and the Tokio runtime.
rt.spawn() requires the future to implement Sync, which open_folder() does not.
This is because it contains pointers to GTK4 objects, which aren't thread-safe.
Or, alternatively just use another alternative runtime that doesn't require Sync.
Idk if there are any.
This allows for a more component-based codebase, like those in web development.
Also added barebone minimap and refactored the file loading.
Should have commited them in a separate commit, but I'm just used to overusing git add -p.
Before, all the traits are implemented for EchidnaApplication.
This is added to better support using the app with many windows open.
EchidnaApplication may be obsolete now, but I'm not removing it for now.