Add -XImpredicativeTypes, and tighten up type-validity checking (cf Trac 2019)
Somehow we didn't have a separate flag for impredicativity; now we do. Furthermore, Trac #2019 showed up a missing test for monotypes in data constructor return types. And I realised that we were even allowing things like Num (forall a. a) => ... which we definitely should not. This patch insists on monotypes in several places where we were (wrongly) too liberal before. Could be merged to 6.8 but no big deal.
Showing with 116 additions and 90 deletions