When enumerating fold attribute, bail when no fold is defined for a range.
Fix check for overlapping ranges when creating a fold.

Because enumerateAttribute:inRange:options:usingBlock:
clips the ranges it reports to the requested range, our check
to see if the overlapping fold range was greater than the
requested fold range was going to always be false. We now
check for equality, which indicates that the overlapping fold
is >= the length of the requested fold.
Never try to set the fold attribute of a zero-length range.
Always set the remaining unset fold range to the new fold's value.
Fix an off-by-one error when setting up new folds in existing ones.
Exclude the last newline from a fold when creating it.