magit-{stgit,topgit}: don't use action hooks

Do not use "action" hooks such as `magit-visit-hook' run by the command
`magit-visit' to add "specialized variants" of these actions for section
types added by extensions.

Such hooks are implemented using `magit-section-action' and I think that
adding this extension mechanism was a mistake in the first place.  Emacs
already has an extension mechanism that can be used to do this sort of
thing: the `keymap' text property.

Replace all uses of action hooks in `magit-stgit' and `magit-topgit by
using that `keymap' property for the text that is part of such
additional sections.

Both extension mechanisms have advantages and disadvantages.  Most
importantly the use of the `keymap' text property means that it is no
longer possible to change just one keymap to use another key for an
action, not only for core commands but also those defined by extensions.
On the other hand there now is a place where users can look to get a
list of all "special commands for a certain section type", the
respective keymap.
magit-topgit: don't overload core commands

Previously `magit-topgit-mode' added specialized functions to four
different command-specific hooks run by fundamental commands that are
part of Magit's core.  These commands did only run these hooks so that
`magit-topgit' could override the behavior of these commands.  I think
the behavior should never be overwritten in such a way.  And the core
of Magit certainly shouldn't be obfuscated to accommodate an extension
hardly anybody uses (280 downloads from Melpa, Magit itself has 57000).

Regardless of whether doing what we used to do is okay or not, we don't
have to do so because there is a better option: use a popup just for
TopGit commands.  Being parasites the TopGit "commands" where not
actually commands but regular functions, so that has to be fixed too.
magit-push: absorb magit-push-dwim

For a while we had a command `magit-push-dwim' separate from
`magit-push' for two reasons:

`magit-push' used to run hook `magit-push-hook' allowing `magit-topgit'
to override its behavior.  Since the previous commits we no longer use
it that way.

Since that hook existed anyway I decided to rename `magit-push's legacy
implementation to `magit-push-dwim' and add a new `magit-push' that did
run that by default.  This was done in preparation of the still
outstanding deprecation of the legacy implementation, which I think is
fairly bad, because it overloads pushing with only marginally related
functionality and departs to much from what Git does.

However there likely are some users who disagree and I intended to keep
the old implementation which for a while was known as `magit-push-dwim'
under the name `magit-push-oldschool', it is now known as just
`magit-push' again and is still going to be deprecated eventually.
magit-topgit-wash-topic: keep flags

Refactor `magit-topgit-wash-topic', making in readable and shrinking
it considerably.  In the process stop losing information (by no longer
removing the flag characters, only two out of seven were and still are
represented with face attributes), remove the unnecessary and ugly
`magit-topgit-parse-flags' and add the face `magit-topgit-empty'
(instead of hardcoding the appearance).
magit-stgit-popup: new popup
magit-svn.el: cosmetics
magit-topgit.el: cosmetics
magit-{stgit,svn,topgit}.el: add longer library commentaries

In return remove information about these extensions from `magit.texi'
and `magit.info' generated from the former.
magit-{stgit,svn,topgit}-mode-lighter: new options
Merge branch 'n/no-actions-1' into next
magit-{branch,branch-or-commit,commit,file,remote}-at-point: new functions

Actually some of these functions already existed under another name or
replace a similar but different function.

* `magit-commit-at-point' was previously known as `magit-current-commit'

* `magit-branch-or-commit-at-point' replaces `magit-guess-branch'.

  When on a commit that is the child of a `wazzup' section, the new
  function returns the commit, the old function returned the branch
  represented by the containing `wazzup' section, which is silly.

* `magit-remote-at-point' replaces `magit-guess-remote'.

  The new function no longer falls back to `magit-get-current-remote'
  and also does no longer does the silly thing the old function was.
  Also stop returning "." to represent "the local repository, being
  treated as 'a remote'".  That wasn't useful, and might have been
  harmful in some cases.
magit-read-local-branch: new function

Use it in `magit-read-local-branch'.  Yes, that should also be used
elsewhere, and yes then we will also have to rethink the default value;
this is only a baby step toward sane branch completion.
magit-read-rev-with-default: remove function

Remove `magit-read-rev-with-default' because the default it did provide
was silly.
magit-branch-delete: fix completion default