Improve/modernize the handling of utf16 data in std::str

Iterators! Use them (in `is_utf16`), create them (in `utf16_chars`).