magit-extras.el: new library

Eventually this library will be split of into a separate
package and possibly even a separate repository, but for
now even explicitly require it at the end of `magit.el'.
magit-extras: adopt marked commit functionality

WAS: remove almost unused "marked commit" functionality

Until recently this was used for three things:

- When selecting the target commit when creating a fixup/squash commit.
  That was a mistake and the result of me being urged to merge the
  squash functionality before I was fully satisfied with it.

- For the "rewrite" functionality which was removed in the previous
  commit.  If that is restored in a separate package, then the mark
  functionality would also have to be restored in that package.

- For the `magit-diff-with-mark' command which is being removed in
  this commit.

Aside from the rewrite stuff, `magit-diff-with-mark' was the only
command that actually did require the concept of a "marked commit".

I don't think acting on some marked commit like this command does, is
really necessary - there are usually other ways to get "that other
commit".  Also the diff popup and commands have been improved a lot
lately and will continue to be improved, making this particular special
command even less useful.

Regardless of the usefulness of this particular command, a single such
command does not justify the increases complexity that comes with the
"marked commit" functionality.  Maybe at some later time we can bring
back this functionality and then use it for more things.  If many things
used this, then maybe it would be useful.  But a single command, that
only few know about, is not useful.
magit-extras: adopt commands that run external tools
magit-run-git-gui: cosmetics
Merge branch 'n/extras-lib' into next