Add group_recursive field to TyClGroup
FreeVars cleanup
isEmptyFVs is not used by anything
Use mkFVs instead of mkNameSet when creating FreeVars

Use mkFVs instead of mkNameSet
Add PatSynDecl to TyClDecl
Lexer and parser support for new language pragma PatternSynonyms
Renamer for pattern synonym declarations

The right-hand side creates the pattern scope in which the left-hand
side is processed
Internal representation of PatSyn data
ConLike is a type for constructor-like things: real data constructors and pattern synomys.
AConLike is the corresponding new TyThing.
Monoid interface for UniqSet
Typechecker for pattern synonyms
Desugaring for pattern synonym declarations
For declarations, the only thing we need to do is desugar the wrapper (if the pattern synonym is bidirectional).
Add pattern synonyms to ModGuts
IfacePatSyn
Add pattern synonym matchers and wrappers to keep_alive list
Handle ConLikes uniformly until we get to mkCoAlgCaseMatchResult
Desugarer for pattern synonym occurances

Split 'CaseAlt ConLike's into DataCon and PatSyn matchers, generate matchers per group
Instantiate PatSyn matchers
tcTyClGroup: handle PatSyns specially since they introduce bindings
HscTypes fixup
Fully store pattern synonym declarations in interface file (WIP)