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
comment only
Add Origin flag to LHsValBinds
Discard desugarer warnings from generated code
Don't generate catch-all failure branch when pattern synonym rhs is irrefutable
Since pattern synonyms are bindings, and they introduce TyThings into the global env, tcTopBinds needs to update the global env as well as the local one