Move 'unpulled' section down in status buffer

At the moment 'unpulled' sits between 'untracked files' and
'changes'. This makes working in a non-clean repository pretty awkward
if the list of unpulled changes is longer than one or two commits as
it splits the important information that a user needs when working on
an unclean repository: untracked files and changes.

This change moves 'unpulled commits' right above 'unpushed
commits'. That way both will keep their relative order, and 'untracked
files' and 'changes' are close together. For a clean repository the
order is not even changed.
Always use a range when calling magit-rev-range-describe in magit-diff
Merge branch 'correct-diff-section-name2'
optionally restore previous window conf after killing Magit buffer

`magit-buffer-switch' now stores the previous window configuration in
the new buffer local variable `magit-previous-window-configuration' and
`magit-quit-window' restores it after killing the Magit buffer iff the
new option `magit-restore-window-configuration' is non-nil.
simplify magit-parse-log-line

* A small change in `magit-log-oneline-re' allows removing an ugly
  kludge here.
* make internal function `match-style-string' all cases
* use cl-mapcan
* rearrange and align a bit

This is in preparation of merging #619 which featured similar changes
(though not exactly the same) but mixed them in the same commit with the
addition of a new feature.
colorize label in `magit-reflog'
Add rebase-mode-show-commit

Use magit-show-commit if available.
rebase-mode.el: move all require forms to start of Code section
rebase-mode.el: require rx
add rebase-mode-backward-line
rebase-mode-show-commit: better doc-string
magit-prefix-p: fix doc-string typo
magit-format-commit: make %h format respect magit-sha1-abbrev-length
magit-refresh-status: use magit-format-commit for head summary
Merge branch 'master' into next
magit--refresh-cherry-buffer: use magit-format-commit for commit summary