Added slightly more behavior-driven test to world.

This test introduces the behavioraly important concept of a tick and begins to talk about what ticks should do. It's currently just a sad little stub, but it points in a useful direction.
Added a nice World#empty method.

This generates a new World that is guaranteed to be empty, allowing client & test code to not have to assume that World.new will return an empty world.
Revised world tests to use new World#empty method.
Changed test location to mock object.

The existing test location was tied to a number of properties of the topology including the use of 2 dimensions and the idea that (1, 1) would be a legal location. This changes things to use an RSpec double (i.e., mock object) instead so we know exactly what our dependencies are.
Added Cell and tests for alive_in_next_generation

I made heavy use of mocking in the tests for whether a cell will be alive in the next generation. This allowed me to completely test that logic without getting muddied up in any of the issues of computing how many neighbors a cell has. This is particularly nice because it allowed to do the tests without having to set up a world, create neighborhoods, or any of that complicated and (for these tests) irrelevant stuff.
Split Cell into LivingCell and DeadCell

This seemed like an odd choice when I saw it hinted at early in the book, but his discussion in "Procedural Polymorphism" (p. 37-41) of the value of polymorphism and its usefulness here was quite compelling, and it turns out that this refactoring definitely cleaned up both the test and the production code in very nice ways.
Inlined the alive_in_next_generation methods

The alive_in_next_generation methods in LivingCell and DeadCell were now just one-line calls to one-line methods that really didn't need to be kept separate anymore. I also found naming the helper methods awkward at the time, which was a sign that getting rid of them was probably a reasonable thing.