Make test for lambda pass

We assume that if a list starts with a list, then that list is a
lambda. And we immediately execute it.
Some better variable names
Replace if/else with case statement
Allow storing lambdas in the environment

Add a simple test to help drive this before tackling the more
complicated `lat?` test.

Assumptions:
 - user-defined functions can override language-defined functions
 - dynamic scope, that is we are merging environments that are passed in
 to lambda.
Remove duplication in immediate evaluation of lambda
s/parameter_name/parameter
Merge pull request #5 from chrislo/310314-meeting

Fifth meeting
Fix immediate evaluation of lambda

Which we broke in the refactoring in 67b40823bf4a2efc5ef73d253f83d3e0db7a1503
Handle evaluation of #t and #f

So that they return themselves when evaluated rather than
nil. This fixes the 'describe (lat? l)' specs.
Merge pull request #6 from mocoso/tidy-up-after-meeting-5

Tidy up after meeting 5
Fix remaining use of #s_expressions in matchers

This should've been done in 1ee19348366762e66aa130859184c950c3100009.
Implement `or`
Make our Lambda support multiple parameters
Enable multiple arguments for lambda
Rename extra_env to arguments_env
Add examples for chapter three
Merge pull request #7 from mocoso/meeting-6

Meeting 6
Remove support for evaluating lists that start with a list

This is making our implementation of List#evaluate more complicated, but
it's not even in the book, so we're parking it for now.
Add a clarifying comment
Implement quote keyword in the initial environment