whisper-cli --output-json-full can emit a lone UTF-8 lead byte as a whole
segment's "text" value, because byte-level decoder tokens (large-v3-turbo)
can leave an incomplete UTF-8 sequence at a segment boundary. The resulting
.json file is not valid UTF-8 and breaks json.load / jq / iconv, while
whisper-cli still exits 0.
Add utf8_sanitize() next to the existing utf8_trailing_bytes_needed() helper in
common-whisper, dropping every byte that is not part of a valid, complete UTF-8
sequence (orphan continuation bytes, truncated sequences, overlong/surrogate
encodings). The JSON string escaper now sanitizes before escaping, so every
string written to the JSON output is well-formed UTF-8.
Fixes#3760