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
Implement lambda, cond and or keywords in the initial environment
Introduce Keyword class

In each case, we just need to turn calls to #evaluate into calls to
the #call method, and that's all that Keyword does.
Make List#== and Atom#== tolerant of instances of other classes
Move implementation of else into cond
Implement primitives in initial environment
Extract KEYWORDS, PRIMITIVES and INITIAL_ENVIRONMENT constants from Evaluator#evaluate
Rename one of the #evaluate methods to #apply

This was never really #evaluate, so now it's clearer that it's something
else.