Simplify word wrapping and fix possible endless loop
wrap_lines_smart() got stuck if there was a long line without spaces
followed by a hard linebreak. When the loop got to the '\n' character
the hard linebreak was not handled because the line was already over
wrap length and soft linebreak handling had precedence. Then at the
end of the loop body the code noted that the hard linebreak hadn't yet
been handled, and the same glyph needed to be reprocessed for that.
However, the soft linebreak code hadn't actually done anything because
there was no space to break at, and thus the loop repeated from the
exact same state forever.
Handle this by removing the check for an additional hard linebreak
after a soft linebreak, which stepped back by one char. This is a
very marginal case and shouldn't really matter in practice.