No longer track "zero-width" chars in `SourceMap`, read directly from the line when calculating the `display_col` of a `BytePos`. Move `char_width` to `rustc_span` and use it from the emitter.
This change allows the following to properly align in terminals (depending on the font, the replaced control codepoints are rendered as 1 or 2 width, on my terminal they are rendered as 1, on VSCode text they are rendered as 2):
```
error: this file contains an unclosed delimiter
--> $DIR/issue-68629.rs:5:17
|
LL | ␜␟ts␀![{i
| -- unclosed delimiter
| |
| unclosed delimiter
LL | ␀␀ fn rݻoa>rݻm
| ^
```
|
||
|---|---|---|
| .. | ||
| do-not-ice-on-note_and_explain.rs | ||
| do-not-ice-on-note_and_explain.stderr | ||
| issue-69341-malformed-derive-inert.rs | ||
| issue-69341-malformed-derive-inert.stderr | ||
| issue-107423-unused-delim-only-one-no-pair.rs | ||
| issue-107423-unused-delim-only-one-no-pair.stderr | ||
| malformed-derive-entry.rs | ||
| malformed-derive-entry.stderr | ||
| malformed-interpolated.rs | ||
| malformed-interpolated.stderr | ||
| malformed-meta-delim.rs | ||
| malformed-meta-delim.stderr | ||
| malformed-regressions.rs | ||
| malformed-regressions.stderr | ||
| malformed-special-attrs.rs | ||
| malformed-special-attrs.stderr | ||