Add syntax and desugarings for multiple pattern matches in a type rule.
Add syntax for term signatures.
Add syntax for type functions.
Fix matches only taking variables on the left hand side.