Add b4.custom-msgid-cmd for replies and notifications

Review replies and thank-you notes are sent directly over SMTP via
send_mail(), bypassing git-send-email and therefore any
sendemail-validate hook that would normally rewrite the Message-Id.
These messages thus always got a built-in <...@b4> id, with no way for
maintainers who rely on their own message-id scheme to override it.

Add an opt-in b4.custom-msgid-cmd option: when set, run it and use its
stdout as the Message-Id (angle brackets optional), falling back to the
built-in id when unset, empty, or on failure. Rather than introduce a
parallel make_msgid() variant, fold the hook directly into make_msgid()
behind an allow_custom_msgid_cmd flag and flip it on at exactly the
reply/notification call sites: review replies, follow-up replies, and
b4 ty thank-you notes.

Series patches sent with b4 prep/send are unaffected, since they derive
their message-ids from make_msgid_tpt() rather than make_msgid(). The
synthetic b4 pr GIT PULL messages are likewise left alone, as their ids
are deliberately derived from the pull request and anchored to
github.com.

Key changes:
- make_msgid() grows an allow_custom_msgid_cmd flag that consults the
  new b4.custom-msgid-cmd config when set
- Enable the flag for review replies, follow-up replies, and ty notes
- Document b4.custom-msgid-cmd in docs/config.rst
- Add unit tests covering opt-in, bracket handling, list-valued config,
  and fallback on unset/failing/empty-output commands

Suggested-by: Christian Brauner (Amutable) <brauner@kernel.org>
Link: https://lore.kernel.org/r/20260522-review-msgid-cmd-v1-1-facc71f2e084@kernel.org
Assisted-by: claude-opus-4-8
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
5 files changed