properly remove temporary diff shown while committing

This broke a little while ago.  And also was to complicated.

Add new function `magit-commit-diff' and do everything related to
bringing up the diff and arranging for it to be later removed here.
Add it to `server-switch-hook'.

In `magit-invoke-popup-action' set `this-command' to the invoked command.

In `magit-mode-display-buffer' set `magit-previous-window-configuration'
to nil if `magit-inhibit-save-previous-winconf's value is `unset'.

Remove `magit-commit-async', we can just use `magit-run-git-with-editor'
now.  Remove `magit-commit-switch-to-buffer', regular `switch-to-buffer'
works just fine now.