InteractiveMessageBox: lay out buttons horizontally if button width does not exceed message width (Fixes #1812)

Also fix some layout bugs.