Adding almost devoid check for covar in ForAllCo

Authored by ningning on Oct 19 2018, 4:10 AM.

Description

Adding almost devoid check for covar in ForAllCo

Summary:
For the sake of consistency of the dependent core, there is a restriction on
where a coercion variable can appear in ForAllCo: the coercion variable can
appear nowhere except in coherence coercions.

Currently this restriction is missing in Core. The goal of this patch is to add
the missing restriction.

After discussion, we decide: coercion variables can appear nowhere except in
GRefl and Refl. Relaxing the restriction to include Refl should not break
consistency, we premuse.

Test Plan: ./validate

Reviewers: goldfire, simonpj, bgamari

Reviewed By: goldfire

Subscribers: rwbarton, carter

GHC Trac Issues: Trac #15757

Differential Revision: https://phabricator.haskell.org/D5231