Support s-if-else, s-prim-app and fix s-letrec.

s-letrec couldn't handle actually handle recursive functions before.
There are now tests to make sure recursive and mutually recursive
functions are supported and type-check correctly.