create application.py
external.py no longer depends directly on Qt
add_access_token now overwrites the token if it exists
add delay_ms to run_on_ui_thread
handle errors in AsyncRequest
add browser.fade for the toast window
window de/activated events
getting rid of the separate Qt signal for event.inform
isToastVisible, and tighten the toast margin from 40 to 10
Add repeating parameter to run_on_main_thread()

That function now returns a token with a stop() method that can be used
to cancel a loop. To allow synchronocity without risking deadlocks, the
subscribe() and stop() methods can now only be called from the main
thread. We enforce this with the @main_thread_only decorator.
Move the decorators back into external.py, just simpler this way
Toast always on top and never focused