Fixed race condition and cancellation exception.

1) There was a race condition when the user attempted to cancel the
StatusDialog when it was being closed by StatusDialog_Opened().
Implemented locks and checks to fix this, and now the dialog stays until
StatusDialog_Opened() is done. If StatusDialog_Opened() is still waiting
for DNS to time out, the cancellation request by the user is cancelled
so the dialog doesn't disappear while the installer hangs waiting for
StatusDialog_Opened() to exit.

2) On unsupported platforms lacking .NET 4.5, the TaskDialog-based
cancel dialog would still try to open and throw an exception (and delay
the cancel screen by a second or two). Put in a couple of conditions to
immediately cancel the installer if .NET 4.5 is missing when the user
clicks the cancel button.