Stk.RopeSourceRope to store text with tags.
This module should not be used directly by library user, but rather through the Textbuffer module.
A range is a start position and a size. Both are in Utf8 characters, not in byte.
zero_range is range ~start:0 size:0. Typically used for accumulators start value.