Simplify creating GUI consent dialogs

This moves all of the Queue handling to the base class.  Not only is it simpler to for the end user, it allows us to change the protocol that's sent along the queues in the future if we need to.

I also changed this to use `tkMessageBox.askyesno` instead of building a whole dialog from scratch with the accompanying button callbacks etc., which I think makes it a lot clearer what's going on.  In the real world, using a canned dialog won't always work, but for the simple minimal example, I think this might be better, IMHO.

I'm not entirely sure where this base class should live -- feel free to move it / put it in another namespace, etc.