Fix unhandled exceptions in session-closing progress thread.

Exceptions propagating to top of thread call stack causes `std::terminate`.  We weren't catching exceptions in the progress dialog thread.  This change fixes that by running the progress dialog in a packaged task, which takes care of catching the exception and transferring it via the future.
Make disconnection progress dialog work in Windows XP.

We forgot the use the emulated task dialog for Windows XP.  Also disabled assertions in the emulated version that triggered if trying to use the marquee.  The marquee works fine in XP.