Better error messages for environment lookups

Using `env.fetch` gives us a nicer error message when a key hasn't been
defined in the environment.
Delegate environment lookup to Atom#evaluate

Evaluate the first item in a list so that the environment lookup is in a
single place (on Atom). This has the pleasant side effect of allowing
us to evaluate lists who's first element is not an Atom.

The test for "lambda" in Chapter 2 now passes, so we remove the
'pending' flag.
Implement zero?
Extract Atom to Integer conversion into a method
Extract Atom.from_boolean
Fix the be_a_tup matcher
Atom#number? returns a scheme boolean
Implement number?
Implement and
Merge pull request #9 from chrislo/master

Meeting 8