Can not offset from an arbitrary node, which the forward iterator is now making
use of.

I have a feeling it would be both more efficient and cleaner to do this
differently. Rather than going to the start of the range and then doing an
offset, we should do the offset from the head. How? Say we want to start from
10, with an offset of 5. Currently, we get to 10, then move apply the offset.
At this point, applying the offset is likely to be O(N). However, when we
find 10, we can easily find out that it's offset from the head is X. Therefore
the offset, with respect to the head is X + 5.