Monoid instance for UniqFM
Add PatSynBind to HsBindLR
Lexer and parser support for new language pragma PatternSynonyms
Move checkConname to RnNames
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.
IfacePatSyn: Iface representation of an exported pattern synonym
Add pat_wrap to ConPatOut
Disable 'patterns are not uses'
Typechecker for pattern synonyms
PatSynBinds cannot occur on the output of the typechecker
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
split_by_constructor: handle cases where no patterns match constructors (possible if all are pattern synonym patterns)
tcPolyCheck: change type to enforce the fact that it works on only one binding
Add Origin flag to LHsValBinds
Discard desugarer warnings from generated code