Renamer for PatSynSigs: handle type variable bindings
tcCheckPatSynDecl: typechecker for pattern synonyms with user-supplied
type signatures
Change output of ':i' for pattern synonyms to be in sync with new syntax
Use user-supplied type variables (when available) in pattern synonym type signatures
Update baseline shift/reduce conflict number
Add parser for pattern synonym type signatures.
Syntax is of the form

    pattern P :: (Prov b) => (Req a) => a -> b -> Int -> T a

which declares a pattern synonym called `P`, with argument types `a`, `b`,
and `Int`, and result type `T a`, with provided context `(Prov b)` and required
context `(Req a)`.
Add test cases