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'.

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.  In `magit-invoke-popup-action' set `this-command'
to the invoked command.