jschardet produced labels like "ascii", "gb2312", "MacCyrillic", "IBM855/866",
and "TIS-620". chardet's supported encoding set does not include any of
these (ASCII folds into UTF-8; Chinese is emitted as GB18030), so the
mappings were dead code.
chardet is less aggressive than jschardet on short CJK samples; a
12-byte Shift_JIS phrase now collides with the windows-1252 profile.
Reuse the longer Shift_JIS sample the rest of the suite relies on.
Swap jschardet for the actively-maintained chardet library for text
encoding detection. chardet ships with TypeScript definitions, so the
local jschardet module shim is no longer needed.
Replace `export namespace Encoding`/`EncodedIO` wrappers with top-level
exports and switch consumers to `import * as Encoding`/`EncodedIO`.
The module itself acts as the namespace, avoiding the TS-namespace
wrapper that tree-shakers and some module resolvers handle awkwardly.
Users that hand us BOM-less UTF-16/32 are violating the documented
contract; trust jschardet + iconv.encodingExists and let the result
be whatever it is.
Add unit tests for the Encoding namespace and extend the tool integration
suite with ApplyPatch delete and EditTool replaceAll paths for non-UTF-8
files.