Encode refutable `ConLike`s in `TmOracle` for correct warnings in the presence of `COMPLETE` groups

Previously, we had an elaborate mechanism for selecting the warnings to
generate in the presence of different `COMPLETE` matching groups that,
albeit finely-tuned, produced wrong results from an end user's
perspective in some cases (#13363).

The underlying issue is that at the point where the `ConVar` case has to
commit to a particular `COMPLETE` group, there's not enough information
to do so and the status quo was to just enumerate all possible complete
sets nondeterministically.  The `getResult` function would then pick the
outcome according to metrics defined in accordance to the user's guide.
But crucially, it lacked knowledge about the order in which affected
clauses appear, leading to the surprising behavior in #13363.

In !1010 we taught the term oracle to reason about literal values a
variable can certainly not take on. This MR extends that idea to
`ConLike`s and thereby fixes #13363: Instead of committing to a
particular `COMPLETE` group in the `ConVar` case, we now split off the
matching constructor incrementally and record the newly covered case as
a refutable shape in the term oracle.  After all clauses have been
processed this way, we filter out any value vector abstractions from the
uncovered set involving variables whose set of covered constructors
completely overlap a `COMPLETE` set.
21 jobs for !963 with wip/pmcheck-ncon in 153 minutes and 37 seconds (queued for 1 second)
detached
Status Job ID Name Coverage
  Lint
passed #121905
lint
ghc-linters

00:00:14

passed #121906
lint
lint-linters

00:00:14

failed #121909
lint allowed to fail
lint-submods-mr

00:00:14

passed #121907
lint
lint-testsuite

00:00:14

passed #121908
lint
typecheck-testsuite

00:00:13

 
  Build
passed #121911
x86_64-linux
hadrian-ghc-in-ghci

00:12:41

failed #121913
x86_64-linux
release-x86_64-linux-deb9-dwarf

00:44:21

failed #121912
x86_64-linux
validate-x86_64-linux-deb9-debug

02:32:44

passed #121910
x86_64-linux
validate-x86_64-linux-deb9-hadrian

02:01:46

 
  Full Build
skipped #121915
aarch64-linux allowed to fail
validate-aarch64-linux-deb9
skipped #121916
x86_64-linux
validate-i386-linux-deb9
skipped #121914
x86_64-darwin
validate-x86_64-darwin
skipped #121917
x86_64-linux
validate-x86_64-linux-deb9-integer-simple
skipped #121918
x86_64-linux
validate-x86_64-linux-deb9-unreg
skipped #121919
x86_64-linux
validate-x86_64-linux-fedora27
skipped #121921
x86_64-windows allowed to fail
validate-x86_64-windows
skipped #121920
x86_64-windows allowed to fail
validate-x86_64-windows-hadrian
 
  Cleanup
passed #121922
x86_64-darwin
cleanup-darwin

00:00:09

 
  Packaging
skipped #121923
x86_64-linux allowed to fail
doc-tarball
 
  Testing
skipped #121924
x86_64-linux allowed to fail manual
hackage
skipped #121925
x86_64-linux
perf-nofib
 
Name Stage Failure
failed
lint-submods-mr Lint
Fetching origin
Entering 'utils/haddock'
Fetching origin
Entering 'utils/hsc2hs'
Fetching origin
$ submodchecker .git $(git rev-list $base..$CI_COMMIT_SHA)
Submodule update(s) detected in 3534f4c7f2bf7f1c35b6b9b7703d8b0b7660b9fa:
*FAIL* commit message does not contain magic 'submodule' word
ERROR: Job failed: exit code 1
failed
validate-x86_64-linux-deb9-debug Build
$ cp -Rf $HOME/.cabal cabal-cache
Uploading artifacts...
ghc-*.tar.xz: found 1 matching files
junit.xml: found 1 matching files

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

Uploading artifacts to coordinator... ok
id=121912 responseStatus=201 Created token=rkWxfKaU
ERROR: Job failed: exit code 1
failed
release-x86_64-linux-deb9-dwarf Build
$ cp -Rf $HOME/.cabal cabal-cache
Uploading artifacts...
ghc-*.tar.xz: found 1 matching files
junit.xml: found 1 matching files

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

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