Do not enable flyspell-mode by default

Flyspell is probably too intrusive to be enabled by default.
Functionally it also depends on system's spell-checker configuration
which is outside of the scope of Git commit mode.

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
git-commit-turn-on-flyspell: fix doc-string
move Font-Lock heading to correct place
remove commit message tests

These tests were needed because the code they are testing is
fundamentally broken, and every time someone tried to fix some bug,
a new one appeared elsewhere.

Instead of beating a dead horse, the next two commits are going to
remove the old implementation, and add a new, sane one (which does not
split functionality at a rather unfortunate place).  This solution will
be structured quite differently, making it impossible to just tweak the
current test.  We would need completely new tests, testing different
things - and hopefully we will write those tests eventually, if needed.
improve commit message saving

Do not use the dubious `git-commit-find-pseudo-header-position',
instead keep the pseudo headers when saving and only strip the
comments.  Add new function `git-commit-buffer-message' to extract
the cleaned up message.
git-commit-insert-header: a sane implementation

Remove `git-commit-find-pseudo-header-position' and
`git-commit-determine-pre-for-pseudo-header'; and instead
change `git-commit-insert-header' to do the sane thing.
define header inserters without use of specialized macros

Remove the macros `git-commit-define-self-header-inserter' and
`git-commit-define-header-inserter', and the utility function
`git-commit-insert-header-as-self'.

Instead define commands which insert pseudo headers (such as
`git-commit-signoff`) simply using `defun'.  These commands
use the new utility functions `git-commit-self-ident' and
`git-commit-read-ident' inside `interactive'.

The defined commands now have better doc-strings and the line
count actually went down.
git-commit-mode-font-lock-keywords: absorb utility functions

Remove the functions `git-commit-mode-summary-font-lock-keywords',
`git-commit-mode-heading-keywords' and do their work directly in
`git-commit-mode-font-lock-keywords'.

Replace constant `git-commit-comment-headings-alist'
with `git-commit-comment-headings'.

Also remove a comment from `git-commit-summary-regexp' (which should
have been part of the original commit message, now see this diff).
git-commit-mode-font-lock-keywords: improve header regexp

Avoid false-positives when searching for pseudo headers with unknown
keywords by expecting the keyword to be followed by "NAME <MAIL>".
Previously we only looked for "KEYWORD: ANYTHING".
respect git variable core.commentchar
fontify comments in the regexp pass

In Git commit messages comments are lines beginning with # (actually
`core.commentchar').  A # later in a line does not begin a comment,
so it is common to use #N to refer to the issue N.

Until now # and everything that follows was always fontified as
comment because we used syntactic fontification.

We already defined a keyword regexp for comments, but that was
redundant.  We also set `comment-use-syntax' to nil, but that only
affects the commands in `newcomment', not actual fontification.

We now turn off syntactic fontification by not adding `core.commentchar'
to the syntax table as a comment starter .  Instead we add it as
punctuation.  (The major mode might already have added it as a comment
starter, we need to override that).

For some reason when a syntactic-pass string appears inside a
regexp-pass comment, then nothing on that line actually is displayed as
comment.  Until we know the cause of this, we work around it by also
defining potential string delimiters as punctuation.
git-commit-check-style-conventions: ask specific questions

Instead of asking whether the user wants to commit despite unnamed
stylistic errors, ask for each error individually and explicitly.

Also remove `git-commit-has-style-errors-p', its functionality
is now sprinkled across `git-commit-check-style-conventions'.

We still ignore certain errors and we shouldn't be doing that.
remove "-face" suffix from face names

The names of faces are not supposed to end with "-face", that is
redundant.  There are some internal faces (most prominently the
font-lock faces) whose names do end with "-face" but these are
exceptions, not a rule to follow.
rename two commit message faces

Rename `git-commit-branch' to `git-commit-comment-branch'.
Rename `git-commit-no-branch' to `git-commit-comment-detached'.

These faces are only used inside comments, and the names of all
other such faces already do contain "-comment-".
improve doc-strings of faces
Merge branch 'n/font-lock' into next
git-commit-mode-font-lock-keywords: fix regression
teach more commands to respect git-rebase-auto-advance, default to t
remove git-rebase-define-action

I don't see the point in a macro whose only purpose
is to cut the line count by half-a-dozen lines.

Also add basic doc-strings to the affected commands.
git-rebase-hash: use same color as for magit-hash

Because `magit' depends on `git-rebase-mode', not the
other way around, we cannot inherit from `magit-hash'.