Fix to instantiate only one login dialog instance.

Prior to this, the login dialog was destroyed and reinstantiated
during every login attempt.

Fixing this required destroying the login dialog at app start,
after the security manager had run its stuff, but doing this
required  working around a segfault that would occur I guess
because the login dialog is a child of the splash screen, so
reparenting to None was necessary. But, our code assumed we'd
never reparent to None, so I had to fix that as well.