add Request closing support to all rejectable dialogs
this ensures that the dialog goes away when the app disappears while the dialog is still up (e.g. when ctrl-c'ing the app)
this simply refactors the existing Request code to correctly register on the path and then emit the closerequest that gets routed to the ::reject function of the dialog. for extra flexibility this is implemented as a template such that the concrete type doesn't matter so long as it has a reject slot.