A sort of zipper: maintains and synchronizes a list of different
versions of an object (see ocamlmerlin.ml top comment).
Element to the left of the cursor
(if last operation was an insertion, the inserted value is returned)
Move forward while item under cursor satisfy predicate
Move backward while item under cursor satisfy predicate
Moves an arbitrary number of steps.
May stop earlier if it reaches an end of history.
Adds an element to the left of the cursor and drops the tail:
insert w ..zyx|abc.. = ..zyxw|
Modifies focused element.