Draw tab characters

Some support for multi-column characters was already added in #29, so this just utilises that with a few tweaks to support tab characters as well.
I don’t think `filter_map` would work, because we need access to the accumulator (`acc`) in order to pass it to `char_width` so we can line up tabs properly.