Implement generics, annonymous functions, HOFs

1. Generic type polymorphism
2. Higher-order constructs (variable functions and anonymous functions)
3. Termination proving capabilities for said higher-order constructs
4. Forall predicates for HOFs