Add new git-related helper to contrib

This script find people that might be interested in a patch, by going
back through the history for each single hunk modified, and finding
people that reviewed, acknowledge, signed, or authored the code the
patch is modifying.

It does this by running 'git blame' incrementally on each hunk, and then
parsing the commit message. After gathering all the relevant people, it
groups them to show what exactly was their role when the participated in
the development of the relevant commit, and on how many relevant commits
they participated. They are only displayed if they pass a minimum
threshold of participation.

For example:

  % git related 0001-remote-hg-trivial-cleanups.patch
  Felipe Contreras <felipe.contreras@gmail.com>
  Jeff King <peff@peff.net>
  Max Horn <max@quendi.de>
  Junio C Hamano <gitster@pobox.com>

Thus it can be used for 'git send-email' as a cc-cmd.

There might be some other related functions to this script, not just to
be used as a cc-cmd.

Comments-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add support for multiple patches

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add option to parse from committish

For example master..feature-a.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: parse committish like format-patch

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: print the amount of involvement

100% means the person was involved in all the commits, in one way or the
other.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add helper Person classes

No functional changes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: show role count

Instead of showing the total involvement, show it per role: author, or
signer.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add support for more roles

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: group persons with same email

Suggested-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: allow usage on other directories

Not just the root one (of the project).

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add mailmap support

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add option parsing

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: implement custom option parser

Ruby's option parser is not extensible enough to keep unknown options.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: parse possible values

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
contrib: related: add option to show commits

Instead of showing the authors and signers, show the commits themselves.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>