WIP comparison tests: generic comparison methods

This follows the development patterns we've been using lately:
a single bunch of request attributes is given to, e.g, the
`assert_compare` method, which translates it to Git for Gitaly.
Request translation is fairly simple, taking care of direct
attributes that are declared to be commit SHAs.

Before comparison, the Mercurial response is also translated to
Git. This is done with a list of attribute dotted paths, with
the special convention that a name ending in `[]` represents a
list-like value on which iteration must happen (see example
in `tests_with_gitaly/test_commit.py`).

For cases where attributes are not comparable, or more generally
acknowledged to differ, the `normalizer` callable can be used.

It's not clear this makes tests easier to write, but it probably
makes them easier to read.

branch : stable
2 jobs for !68 with topic/stable/comp-rpc-helper in 1 minute and 6 seconds (queued for 1 second)
latest detached
Status Job ID Name Coverage
failed tests-current #227455


passed check-sdist #227456


Name Stage Failure
tests-current Main
TOTAL 3791 19 99%

FAIL Required test coverage of 100% not reached. Total coverage: 99.50%
=========================== short test summary info ============================
FAILED tests_with_gitaly/test_commit.py::test_compare_list_last_commits_for_tree
================== 1 failed, 111 passed, 5 warnings in 27.98s ==================
Cleaning up file based variables
ERROR: Job failed: exit code 1