Monoid interface for UniqSet
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.
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 bidirectional pattern synonym wrappers to keep_alive list
Temporarily disable bidirectional pattern synonyms
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