reposchutz: improve change detection logic
reposchutz: improve change detection logic

The workflow has a fairly simple strategy at present: if there are
changes to the `.github` directory (as per `git diff`) then fail.  That
has two problems:

 - the changes might have come from an unrelated PR that got merged in
   the meantime; and

 - the PR can "get away with" individual commits that make changes, as
   long as there are future commits that revert those changes.
   Depending on the merge/rebase strategy used when landing, thre are
   some creative way to sneak changes through anyway.

Replace the previous logic with a new one: list all commits which are:

 - reachable from the PR;

 - not already on the target branch; and

 - modify `.github`

and fail if the result is non-empty.

Factor out the context expressions for the relevant SHAs into
environment variables to improve readability.

Finally, since our new approach depends on more than just looking at the
two head commits, a shallow fetch isn't sufficient anymore.  `git fetch`
has a (somewhat new) relevant feature `--shallow-exclude=` which would
be very helpful to us here, but the GitHub server seems not to support
it, so just fetch a full history for the time being.

cockpit-project/cockpit,garrett/cockpit,mvollmer/cockpit,garrett/cockpit,cockpit-project/cockpit,cockpit-project/cockpit,cockpit-project/cockpit,martinpitt/cockpit,garrett/cockpit,mvollmer/cockpit,mvollmer/cockpit,garrett/cockpit,mvollmer/cockpit,martinpitt/cockpit,martinpitt/cockpit,cockpit-project/cockpit,mvollmer/cockpit,martinpitt/cockpit,garrett/cockpit,martinpitt/cockpit