delimit sections with markers

Store markers instead of positions in the BEGINNING and END slots of
section structs.  This makes it possible change text before a section
after it has been washed.  Once case in which this is useful is when
washing a section properly requires information that isn't available
until another section that textually comes later has been washed.

The BEGINNING marker is initially set to not advance when text is
inserted at the place it points to (or nothing would ever become part
of the section), but once washing is done it is changed to advance.
optionally append the number of children to section headings

Close #548.
Merge branch 'pr/count'
magit-insert-section: only show child count if heading ends in colon
add commands magit-diff-{un,}staged
bind magit-diff-staged in git-commit-mode-map
Merge branch 'pr/staged'
bind magit-diff-staged to C-c C-d

For consistency with other bindings.
bind magit-diff-staged in git-commit-mode-map
merge SPC-for-args tarsius/pr/squash guess-unpulled find-old-sect2