keyword: make repo.commit use a custom commitctx wrapper
This avoids forcing the dirstate of overwritten files to normal
during a commit.
Thanks to Dan Villiom Podlaski Christiansen for the idea of a
"double wrapper", so other extensions can still wrap
repo.commitctx safely.
commit: lose some pointless 'nothing changed' messages
Move message from localrepo to commands. This drops confusing messages
in subrepo, import, and rebase.
addremove: build lists of already added and removed files too (
issue1696)