Yet another new implementation of indentation, this time with more
flexibility for future extension.  The key idea is to keep *five*
tallies: a running total as of the beginning of each line of the
various indentation scopes, a count of indentations added that apply
to the current and subsequent lines, a count of indentations added
that apply to the subsequent lines, a count of outdentations that
apply to the subsequent lines, and a count of outdentations that apply
to the current and subsequent lines.  So for example, a "sharing" line
outdents the current and subsequent lines, and also indents the
subsequent lines.  The net effect is that the "sharing" line is
outdented and subsequent lines stay at the right depth.  The one
unfixed bug I'm currently aware of is that lines beginning with a
period and ending with unfinished parentheses (such as the simple
snippet "foo\n  .bar(\n  x)") will not further indent the arguments to
that function.