fix typo in comment
reimplement wazzup from scratch

The old implementation was problematic because it did not use the
existing abstractions used elsewhere and because was very slow (521).
Because of the former issue it was needlessly complicated, while also
lacking features.  And in order to address the latter two different ways
of limiting what branches are displayed were added, again making it more
complex than it needs to be.

Additionally one of these filter mechanisms required that the user
individually marked branches he did not want to be shown.  Because doing
so results in a refresh of the complete buffer this effectively meant
that he, in order to eventually get a speedup, had to repeat the action
which he wants to speedup - several times, adding insult to injury.

This implementation takes a different approach.  Like this is also done
for diff hunks but until now nowhere else, it does not merely hide the
body of collapsed sections, it does not even calculate the commits until
they are actually being displayed.

Unfortunately the section framework has several shortcomings which
result in a lot of complexity in `magit-insert-wazzup-commits'.  In
theory this function could be almost as simple as, lets say,
`magit-insert-unpulled-commits', but as of now it consists of a
collection of kludges.  Fixing the section api to make this unnecessary
is a difficult task and requires changes throughout Magit.  So that will
have to wait until another day.

Because wazzup is much faster now this does not add a new and better
exclude mechanism.  Instead the old mechanisms are dropped without a
replacement.  This can still problematic when a user expands all
sections (e.g. using M-2) but he doing so does not make much sense -
especially not when there are many branches.
magit-wazzup: with prefix argument allow selecting another rev
magit-insert-wazzup-commits: use cherry instead of regular log

Use `git cherry' instead of `git log'.
Merge branch 'pr/wazzup'
magit-revert-buffer: remove incomplete comment

Remove half truth about why we are not reverting an indirect buffer.
Sure, as the comment said, that would revert the parent buffer; but
the reason we don't want that is relevant: we would end up doing it
twice.  We *could* extend the comment, but then again there are many
things we could add a comment for.
magit-revert-buffer: change order of two conditions

The conditions whose positions are switched are both rather cheap.
By switching them all the "unless reverting would destroy something"
are now located next to each other without an unrelated condition
in between.
magit-revert-buffer: use more appropriate conditionals
magit-revert-buffer: do not revert untracked files
Merge branch 'revert-buffer'
magit-buffer-file-name: properly deal with symlinks

This fixes #922.
magit-run-git-gui-blame: by default don't require confirmation

Instead require a prefix argument to allow selecting another revision
and/or file.  This was requested in #787.
magit-read-file-from-rev: fix when not at repository root

Previously `magit-read-file-from-rev' read a filename relative to the
current directory, but since callers expect a filename relative to the
repository root, that did not work when the two are not identical.
Merge branch 'quick-blame'
Fix typo in magit-insert-unpushed-cherries

pulled -> pushed
Merge pull request #984 from mgalgs/typo

Fix typo in magit-insert-unpushed-cherries
magit-refresh-buffer: make sure BUFFER is non-nil

In `magit-refresh-buffer' make sure BUFFER is non-nil, instead of
using `current-buffer' instead of BUFFER.  This makes using that
buffer nicer than just passing BUFFER or else `current-buffer' to
`with-current-buffer'.
magit-refresh-buffer: reduce nesting
magit-refresh-buffer: update commit marker later

In `magit-refresh-buffer' call `magit-refresh-marked-commits-in buffer'
right after `magit-highlight-section'.  Therefor call it becomes the
very last step of refreshing; however the real point is not to do it
in between some unrelated steps (which are related to each other, just
not the commit marker).
magit-refresh-buffer: actually sync point in other windows

`magit-refresh-buffer' did already attempt to update the "window local"
point in other windows showing the same buffer.  However it failed to
request all such windows from `get-buffer-window-list'; it only
requested windows of the current frame, which in most cases equals to
the selected window.  Now we process windows from all frames.

This fixes the special case mentioned by me in issue #687.  At least
in most cases, that is when this function is *actually* called.