Remove some ambiguites when using lists.
Rename Symbol to Name.
Change functions to take symbols as parameters.
Change def to take a symbol.
Change let to take a symbol.
Update syntax in examples.
Make def a function.

This also changes how recursion is done. Recursion does not depend on
using def anymore, so standalone functions can be recursive by using the
'recur' binding.
Add test for functions with complicated nested scope.
Add proper test for definition order.
Make data a function.
Make exit a function.
Add blocks.
Remove warning message.
Add the concept of enclosing environments.
Function bodies are now blocks.
Make outer environment accessible to native functions.
function is now a function.
Rename recur to recurse.
Fix TCO.
Update syntax in examples.