RED - Empty space with three neighbors brings a con to life.
GREEN - Cells with three neighbors come to life

This is a pretty hacky implementation which involves collecting all the
neighbors of a cell that does exist and checking if they should come to
life.

It's probably very, very slow as:
* Every single cell gets all of it's neighbors checked, so as new cells
  get added the time of this algorithm goes up
* We do a `uniq` comparison, which has to check each empty space against
  every other empty space.

Plus it's poorly factored. Time to break out the Refactor gloves!
REFACTOR - Move responsibility for nearby spaces to Con

Now Con doesn't need to know about the `world` which is nice.
REFACTOR - Introduce reduce statements

Not sure fi I like this or not. We'll go with it for now.
REFACTOR - Extract `newborns` and `survivors` methods
REFACTOR - Move GameOfLife into it's own file

The file was getting unweildly with those tests, so I put them in a lib
directory
RED - Write test for rendering a 1,1 world with a con

The user interface is almost always a good seam to test in isolation.
GREEN - Drawing a 1,1 world with a single con
RED - Test drawing an empty 1 by 1 world
GREEN - Drawing an empty 1 by 1 world
REFACTOR - Extract char method
RED - Drawing a 3x3 world with a con at 0,0
GREEN - Drawing a 3 by 3 world with a con at 0,0
REFACTOR - Change each's to Reduces
RED - Add before iteration callback

We'll use this to hook into our UI
GREEN - Watch a game progress 10 rounds.

Turns out my previous tests weren't enough! Ruby comparison of objects
with uniq didn't work the way I had expected!
http://platypus.belighted.com/blog/2013/02/08/overriding-equals-equals/

Ya learn something new every day!