`set_string_truncated` renders the entire string while ignoring
newlines, so if the diagnostic's message contains multiple lines it
produces messages like 'first linesecond line'.
To avoid these run-ons, this commit renders each line separately,
inserting double spaces for disambiguation.
When pressing tab at the edge of the screen, Helix panics in debug mode
subtracting position.col - self.offset.col.
To correctly account for graphemes that are partially visible,
column_in_bounds takes a width and returns whether the whole range is
in bounds.
Co-authored-by: Rose Hogenson <rosehogenson@posteo.net>