Cleanup get_fs_type a bit

Result is defaulted to "unknown" at the start of the function, so no
need to do that again
Properly close mtab and free search_path on error
Fix $scroll with utf-8 text

This boils down to distinguishing characters from bytes when utf8_mode
is true. Previously partial characters would be shown, resulting in
garbage.
Fix scrolling with short texts

Supposedly the code removed was added to fix just that, but it did not
work, and the whole space padding seems unnecessary. This is raw text
with objects anyway, so length doesn't mean much.
Reset colour in $scroll when not scrolling

This prevents the last colour used in $scroll from bleeding into
following objects when no text actually scrolls due to length.
Fix $scroll with combining characters

Non-spacing marks, spacing combining marks, and perhaps others, are
characters that only make sense when combined with another character in
certain scripts. Count such combined graphemes as one character for
$scroll.
Don't mangle current_text_color in $scroll

extract_variable_text_internal may set current_text_color, which is an
undesired side effect when parsing. This would result in the resetcolor
of a later $scroll being affected by the $colors used in an earlier
$scroll. E.g.: `${scroll 1 f${red}} not red ${scroll 1 f${red}} red`.