Handle authentication requests from web page

Although the username and password are set in the initial URL provided
to the HTML viewer, the browser may still need them again later on. This
commit attaches a lambda to the QNetworkAccessManager which handles
these requests.
Improve synchronicity of startup sequence

Previously the startup was largely linear, with a long block while the
client initialized before Qt's event loop was started. This was hacked
around with lots of qApp->processEvents calls sprinkled about, but a
better solution is to use signals to synchronize the startup procedures.

Now the startup sequence is controlled by signals, where the client
initialization is triggered manually in a background thread, and the
main thread immediately goes into the Qt event loop. When the client is
initialized, it emits a signal which prompts the web interface to load.
When the web interface finishes loading, it triggers the web browser to
show, which hides the splash screen.