An index into a Rope data structure. Used to efficiently identify a particular
position in a Rope. As Rope always uses Rust strings interally, code point
indices represented in a RopeIndex are assumed to be UTF-8 code points (one byte
each).
A generic movement iterator for a Rope. This can move in both directions. Note
than when moving forward and backward, the indices returned for each unit are
different. When moving forward, the end of the unit of movement is returned and when
moving backward the start of the unit of movement is returned. This matches the
expected behavior when interactively moving through editable text.