Implement the defun primitive

Doing so requires the introduction of the concept of variables and a new
compilation stage to convert the variables found in Kl s-expressions
into Kl::Variable objects.