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.
Add examples for chapter four
Pend some tests around numbers so that we do not all die of old age
Fix broken be_a_number matcher
Implement add1 primitive
Call #to_sym in Atom constructor
Skip examples rather than pend them; please send help
Implement sub1 primitive
Consolidate implementations of #number?
Make sub1 return nothing unless its result is a number (i.e. a nonnegative integer)
Merge pull request #8 from tomstuart/meeting-7

Meeting 7