Split ruler view into ruler view and ViLineNumberView.

We add a ViLineNumberView that is in charge of actually
drawing the line numbers, while the ViRulerView delegates
to it. This is a precursor to having more than one view, since
we’ll be wanting a view that represents the column that
contains fold areas.
Drop back down to (digits + 1) width for the line number view.

It was + 3 to accomodate our hacky way of indicating folds.
Since that’s about to be in a separate view, we no longer
need the extra padding to be built in to the line number view.
Move rule thickness updating to a dedicated function.
Add a little more detail to ViLineNumberView API docs.
Rename lineViewFrameDidChange: to subviewFrameDidChange:.

This is to indicate the more generic nature of the function.
Also remove the setRuleThickness: call in setTextView:,
since once the line number view is set up, updating its view
frame will trigger a thickness update anyway.
Add ViFoldMarginView.

This is pretty basic for now, and drops a blackish block
where a fold exists. No concept of nesting yet.
Proper alpha blending for fold indicator drawing, graded by depth.
When adding a child to an existing fold, set the depth properly.

We were always setting it to 2, instead of basing it on the
parent depth.
Drop some vestiges of the old fold indication strategy.
Clicking a fold now toggles its collapsedness in the text view.
Push opening/closing of folds into private methods that take a ViFold object.
Push fold toggling into the document from the text view.
Fix dragging in the ruler to select multiple lines.
Invalidate display in the fold margin as we toggle the fold.

If we don’t do this, the fold margin actually takes a second to
catch up to the updated fold text *only* in the case where it’s
toggled from the margin (if it’s toggled via zc/zo things seem
to work fine).
Guard mouseUp invocation on fold margin view.

We were always trying to toggle the fold at the line where
the mouse was released, even if the mouse was released
at the end of a drag operation that was selecting lines.