Make all hook references relative to thier location

Some hooks were getting referenced directly via $GIT_DIR/hooks while at
other times getting referenced relative via ${BASH_SOURCE%/*}.  By making
all references relative then these hooks can reside in a different folder
and still be daisy-chained by other hooks.
hooks-config: Subsume hooks-chain functionality

Remove hooks-chain.bash and place its content in hooks-config.bash.
hooks-config: Read 'git config' values from project .hooks-config

Allow projects to configure hooks with a 'git config'-formatted file at
the top of their source tree called ".hooks-config".  This avoids use of
bash-specific syntax and makes configuration declarative.
hooks-config: Factor child execution out of hooks_chain

Factor child execution into a separate "hooks_child" function so it can
be re-used.
Load project-specific "start" hooks before our checks

Read from the project ".hooks-config" a configuration value

 hooks.start.commit-msg
 hooks.start.pre-commit
 hooks.start.prepare-commit-msg

to run from our respective hook before its main checks.
commit-msg: Remove MERGE_HEAD check from msg_is_merge

When using "git commit --amend" to edit a merge commit message the
MERGE_HEAD is long gone.  Also, some Git versions remove this file
before the commit-msg hook is called.  In either case we should still
allow long summary lines that start in 'Merge ' just as we do for
'Revert '.