magit-stash-snapshot: disable until serious bug is fixed

This command may eat the users data.  Disable it by raising an error
when used.  We are not using the `disabled' property because expert
users may have set `disabled-command-function' to nil and their data
isn't safe either.
magit-show-commit: kludge for annotated tags

Show "TAG^{commit}" instead of failing to show "TAG".  It would
be better to show the tag object, but that isn't supported yet.
magit-insert-status-tags-line: bugfix

Use tag name as section value, not a list whose car is such a string.
magit-run-git-gui-blame: fix when linenum is missing

2eb34da broke magit-run-git-gui-blame by erroneously changing the
argument to magit-file-relative-name to be a directory.  This prevented
the linenum argument from being properly populated.
Merge pull request #1530 from aspiers/fix-git-gui-blame

magit-run-git-gui-blame: fix when linenum is missing
Merge branch 'master' into next

Conflicts:
	magit.el
magit-log-{*}-re: support empty commit messages
magit-with-temp-index: sanitize
magit-commit-tree: add optional TREE argument

If it isn't provided still use `git write-tree'
to create a tree from the index.
magit-commit-worktree: add optional OTHER-PARENTS argument

"HEAD" is always the first parent.
magit-commit-worktree: fail if the index cannot be updated
magit-update-files: new function
magit-untracked-files: add optional ALL argument
magit-{modified,staged,untracked}-files: add NOMODULES argument
magit-stash-{apply,pop}: always try to reinstate index

And when that fails then properly fallback to not doing it.
In that case only apply the stash, don't drop it.
magit-stash-{drop,branch}: remove git cmdline from doc-strings
magit-stash-drop: properly abort if user cancels
magit-stash-clear: new command
magit-reflog-enable: prevent undead reflog entries

Git makes it quite hard to create a reflog for a ref not covered by
core.logAllRefUpdates.  If we are not carefull we end up with reflogs
that cause `git reflog' to output an undead trailing entry.
do not rely on `git stash' to create stashes

Add plumbing functions `magit-stash-create', `magit-stash-store' and
`magit-stash-save' and use them instead of `git stash' subcommands.
These functions use only Git plumbing commands and give us more
flexibility than hacking around the limitations of the `git stash'
porcelain.

Rename existing commands for creating snapshot stashes so that their
names begin with "magit-snapshot".  Add new snapshot and on-demand
stash commands.  Add several utility functions.  Adjust the popup.