Implement AST and syntax for case-expressions

Case expresssions are for pattern-matching and are similar to Haskell
ones.
TODO: typechecking and evaluation of case-expressions