Replace declfun with result-type deduction.

Hold a LispMachine{vars, functions} which contains the type of each
identifier, even those that have no generated code.  Add a virtual
function, ltype(LispMachine), that returns the type of the AST node.

Defun::codegen() now merely adds its definition to the LispMachine. When
called, mangle the function name, assign types to the arguments from the
caller's values, deduce the result type, generate the function, and
finally call it.
Merge branch 'vars'