Additionally add support for normal saving ("Save File").
This change gives support for saving files other than the current one.
EchidnaWindow.save_file_as() was only able to save the current tab opened.
EchidnaWindow.get_current_tab() can now be used independently.
This will help with reusing it in another places. I think it will be used a lot.
Additionally, it will return Result<A, &str> instead of panicking, as it's a utils function now and should never panic.
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.
The MPL is a file-based license, rather than a codebase-based license.
Each files need to be marked as MPL.
If we don't do mark them, they may cause confusion.
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.