String Index unification vs BidirectionalCollection requirements

Fun historical note: this was actually the originally proposed version of SE-0180; it got changed during review because of code compatibility concerns. (Which got largely thrown out by all the UTF-8 work a year or so later, with minimal problems.) It’s tricky to foresee what will actually cause problems.

(As I implied above, rounding indices down would not have helped with the BidirectionalCollection requirement — that would still be violated.)