allow for more control on refreshes when show()ing widgets

for now, we have show() automatically call setDirty() for the new
widget, as before. However, now show() takes two arguments for
refresh configuration that will get passed on to setDirty().

For compatibility, the default is here in show() to do a partial
refresh. So if you want no refresh triggered (via this show() call),
add a function that doesn't return anything.
dictionary window triggers refresh itself, not via show()
record ButtonDialog.dimen
refresh only dialog part of the screen for multi-word selection window
add refresh control to UIManager:close()
use API for refresh when closing widgets in message popups