Support for anonymous functions

If the first element of an expression is not a keyword then it is
evaluated, rather than calling lookup() explicitly. If it is a function
bound to a variable then eval_in_env() will perform lookup() and return
the closure, otherwise the lambda will be evaluated and return the
closure directly.
Added new primitive functions and tests.
Tidied up test function names.
Added list functions.

cons, car, cdr, list, null and null?
added some comments to eval_in_env()
Added functions 'and', 'or' and atoms '#t', '#f'.
New simplified parser

The new parser uses the fact that tokenize() outputs a generator to
simplify the parsing process. It automatically generates a list of
expressions so there is no need for the programize() function and
eval_loop() is also simplified.