std::str: Bidirectional CharSplitIterator

New methods `.rsplit_iter()` and `.rsplitn_iter()` for &str.

CharSplitIterator (for `split_iter`) is bidirectional while the `splitn`
and `rsplitn` iterators (limited to N splits) are not, since these don't
have the same symmetry.

CharSplitIterator is a bit awkward when handling the option
`allow_trailing_empty` for the reverse case.

With CharSplitIterator being bidirectional, derived iterators
`line_iter` and `word_iter` are too.
std::str: Rename split_options_iter to split_terminator_iter

Name the method explicitly for terminator semantics (as opposed to
separator semantics).