## Description
This PR rolls #17380 (successfully merged once) yet again.
## Test plan
Features tests.
## Release notes
Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.
For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.
- [x] Protocol: This change updates the [ascii
module](https://docs.sui.io/references/framework/move-stdlib/ascii) in
the following ways:
Adds new methods to `std::ascii`:
- `ascii::append(&mut String, String)`
- `ascii::is_empty(): bool`
- `ascii::substring(&String, i, j): String`
- `ascii::index_of(&String, &String): u64`
- `ascii::to_uppercase(&String): String`
- `ascii::to_lowercase(&String): String`
These additions make the ASCII interface more similar to the UTF8 one.
Renames:
- `string::bytes() to string::as_bytes()`
- `string::sub_string() to string::substring()`
Deprecates:
- `string::sub_string` in favour of `string::substring`
- `string::bytes` in favour of `string::as_bytes`
Additional changes:
- updates `std::type_name` to use `std::substring`
- removes use statements for implicit imports
- renames constants from `E_INDEX` to conventional `EIndexOutOfBounds`