new special purpose commit commands

Add new special purpose commit commands `magit-commit-{amend,extend,reword,fixup,squash}`.

Note that the last two just create fixup/squash commits, they don't actually squash. Likewise interactive rebase does not automatically modify the todo list, unless one has set the appropriate git variable. I will later work on adding `--autosquash` to rebase, which requires the use of a popup (but that will have to be done very very carefully).

This also adds option `magit-commit-ask-to-stage` which is somewhat like `magit-commit-all-when-nothing-staged`, which in turn was removed a while ago. It does not offer multiple ways of staging like the old option did, that wasn't really very useful. When the user is asked whether he wants to stage or not, the unstaged changes are shown, similar to how the staged changes are shown when creating a commit (and something is already staged).

This still needs some testing. Maybe those who requested these things could help. @azuk @mgalgs @Andersbakken 
I did test but also did a lot of uhm... squashing, and that doesn't come without risks, especially since I was *at the same time* writing the commands used for... squashing. :-)