This also tidies up some of the code for saving files, the dialogs are
opened in a new thread so that we can continue to render the application
in the main thread
This allows the user to open notepad_squared without needing to pass a
filename as an argument, however, we currently don't support saving
files that have been opened in this manor
Without this you cannot compile notepad_squared, don't know how I missed
this
Also, this commit also tidies up the imports in main, seperating the
core and vendor imports slightly