DialogClosing event updates

Closing a dialog can be cancelled by user code via the
CloseDialogEventArgs.CancelClose property. The dialog stack is properly
managed when dialog closing is cancelled, even for cases when the user
code also pops up an additional dialog.