Improve offset caching for Aullar

In contrast to the old crude implementation, this now works with
gap buffers. This allows the caching to not require any gap movement
or other additional expensive operations for an offset lookup.