use non-breaking space for button with no description

to preserve button's size

reverses some inappropriate replacements of .html with .text.

closes #5113
handle space-only strings, not just zero-length
add utils.escape_html
handle empty string in ToggleButtonsWidget