add git-commit-{prev,next,save}-message, git-commit-kill-buffer-hook

Restores the ability to bring back previous commit messages while
editing a new message.  Also extends the old behaviour like so:

* Add command `git-commit-save-comment'.  This allows storing the
  current message at any time.  (Do you have a suggestion for a
  better key binding.)
* Automatically save the current message when aborting (and less
  importantly when finalizing) a commit.  This replaces the old
  backup mechanism that used the `kill-ring'.
* No longer save the *initial* message by default.  Instead of
  saving when opening the message do so when leaving it.
* Make that above customizable using the new hooks
  `git-commit-mode-hook' and `git-commit-kill-buffer-hook'.
* Store the current message before switching to another message.
  With the old implementation accidentally hitting the wrong
  key would destroy the current message.
teach flyspell to ignore commends in commit messages
when editing commit messages enable flyspell by default
add turn-on-auto-fill to git-commit-mode-hook

Turn on Auto Fill mode by adding `turn-on-auto-fill' to the default
value of `git-commit-mode-hook' instead of unconditionally calling it in
`git-commit-mode'.
Merge branch 'commit-hooks'

Conflicts:
	git-commit-mode.el
git-commit-mode: set comment-start's *local* value

Since 7371ee19 `comment-start' is set to "#" in `git-commit-mode'.
However that was done without realizing that it defined using `defvar'
not `defvar-local'.  So we have to explicitly set the local value
ourselves.