PmCheck: Better long-distance info for where bindings (#18533)

Where bindings can see evidence from the pattern match of the `GRHSs`
they belong to, but not from anything in any of the guards (which belong
to one of possibly many RHSs).

Before this patch, we did *not* consider said evidence, causing #18533,
where the lack of considering type information from a case pattern match
leads to failure to resolve the vanilla COMPLETE set of a data type.

Making available that information required a medium amount of
refactoring so that `checkMatches` can return a
`[(Deltas, NonEmpty Deltas)]`; one `(Deltas, NonEmpty Deltas)` for each
`GRHSs` of the match group. The first component of the pair is the
covered set of the pattern, the second component is one covered set per
RHS.

Fixes #18533.
Regression test case: T18533
23 jobs for !3849 with wip/T18533 in 526 minutes and 6 seconds (queued for 1 second)
detached
Status Job ID Name Coverage
  Lint
passed #416002
lint
ghc-linters

00:00:15

passed #416003
lint
lint-linters

00:00:14

passed #416006
lint
lint-submods

00:00:22

passed #416004
lint
lint-testsuite

00:00:16

passed #416005
lint
typecheck-testsuite

00:00:15

 
  Quick Build
passed #416007
x86_64-linux
hadrian-ghc-in-ghci

00:10:49

 
  Build
passed #416008
x86_64-linux
validate-x86_64-linux-deb9-hadrian

02:03:14

 
  Full Build
failed #416011
aarch64-linux allowed to fail
validate-aarch64-linux-deb9

03:05:51

failed #416012
armv7-linux allowed to fail
validate-armv7-linux-deb9

03:55:44

passed #416013
x86_64-linux
validate-i386-linux-deb9

01:42:01

passed #416010
x86_64-darwin
validate-x86_64-darwin

01:11:03

passed #416014
x86_64-linux
validate-x86_64-linux-deb9-debug

01:46:18

passed #416511
x86_64-linux
validate-x86_64-linux-deb9-dwarf

02:04:24

passed #416015
x86_64-linux
validate-x86_64-linux-deb9-integer-simple

01:18:26

passed #416009
x86_64-linux
validate-x86_64-linux-deb9-unreg-hadrian

03:18:57

passed #416017
x86_64-linux
validate-x86_64-linux-fedora27

01:32:51

failed #416019
new-x86_64-windows test allowed to fail
validate-x86_64-windows

00:29:46

failed #416018
new-x86_64-windows test allowed to fail
validate-x86_64-windows-hadrian

00:47:17

failed #416016
x86_64-linux
validate-x86_64-linux-deb9-dwarf

01:39:28

 
  Cleanup
passed #416020
x86_64-darwin
cleanup-darwin

00:00:17

 
  Packaging
failed #416021
x86_64-linux allowed to fail
doc-tarball

00:00:24

 
  Testing
manual #416022
x86_64-linux allowed to fail manual
hackage
passed #416023
x86_64-linux
perf-nofib

00:34:05

 
Name Stage Failure
failed
doc-tarball Packaging
Entering 'utils/haddock'
Entering 'utils/hsc2hs'
Downloading artifacts
Downloading artifacts for validate-x86_64-linux-deb9-debug (416014)...
Downloading artifacts from coordinator... ok
id=416014 responseStatus=200 OK token=e5UzTEtk
Executing "step_script" stage of the job script
$ if [ ! -f "$LINUX_BINDIST" ]; then # collapsed multi-line command
Error: ghc-x86_64-mingw32.tar.xz does not exist. Did the 64-bit Windows job fail?
ERROR: Job failed: exit code 1
failed
validate-x86_64-windows Full Build
Git branch:   13-1-stable
GO version: go1.13.8
Built: 2020-06-19T21:12:23+0000
OS/Arch: windows/amd64
Uploading artifacts...
Runtime platform
arch=amd64 os=windows pid=8284 revision=6214287e version=13.1.0
WARNING: junit.xml: no matching files
ERROR: No files to upload
ERROR: Job failed: exit status 1
failed
validate-aarch64-linux-deb9 Full Build
Uploading artifacts...
ghc-aarch64-linux-deb9.tar.xz: found 1 matching files and directories

junit.xml: found 1 matching files and directories

performance-metrics.tsv: found 1 matching files and directories

Uploading artifacts as "archive" to coordinator... ok
id=416011 responseStatus=201 Created token=kvQZWzs_
Uploading artifacts...
junit.xml: found 1 matching files and directories

Uploading artifacts as "junit" to coordinator... ok
id=416011 responseStatus=201 Created token=kvQZWzs_
ERROR: Job failed: exit code 1
failed
validate-x86_64-windows-hadrian Full Build
Git branch:   13-1-stable
GO version: go1.13.8
Built: 2020-06-19T21:12:23+0000
OS/Arch: windows/amd64
Uploading artifacts...
Runtime platform
arch=amd64 os=windows pid=5668 revision=6214287e version=13.1.0
WARNING: junit.xml: no matching files
ERROR: No files to upload
ERROR: Job failed: exit status 1
failed
validate-armv7-linux-deb9 Full Build
Uploading artifacts...
ghc-armv7-linux-deb9.tar.xz: found 1 matching files

junit.xml: found 1 matching files

performance-metrics.tsv: found 1 matching files

Uploading artifacts to coordinator... ok
id=416012 responseStatus=201 Created token=1MXpgyFy
Uploading artifacts...
junit.xml: found 1 matching files

Uploading artifacts to coordinator... ok
id=416012 responseStatus=201 Created token=1MXpgyFy
ERROR: Job failed: exit code 1