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
Add pattern synonyms to ModGuts
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
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
split off Id creation from tcPatSynMatcher and tcPatSynWrapper
IfacePatSyn