Injective type families

Summary: This ticket is about implementing injective type families. See #6018 and https://ghc.haskell.org/trac/ghc/wiki/InjectiveTypeFamilies

Test Plan: ./validate

Reviewers: simonpj, austin

Subscribers: simonmar, ezyang, carter

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

GHC Trac Issues: #6018
Represent injectivity conditions as names, not TyVars