Add hasParent: and topmostParent methods to ViFold.

hasParent: returns YES if there the passed in fold is a
parent of the receiver, while topmostParent returns the
parent fold that is at the top of this fold’s tree hierarchy,
which may be this fold itself (if it has no parent).
Prevent infinite recursion in addChildToFold.

If you pass in the same fold for parent and child, we bail.
Semi-functioning updating of folds when content changes.

Something is still getting futzed up on the beginning location
of the fold if you edit within it, even though it’s expanding
properly. There’s also some odd behavior at the edges, e.g.
O on the first line of a fold extends the range while o above
that line does not, and o on the last line of the fold reduces
the range’s length by one line. More to come.