Add support 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).