Extract drawCell function
Move main loop into page
Extract Rule into its own file
Extract CellGrid into its own file
Pass size, not cells, into CellularAutomaton

It’s just annoying to have to make the array of empty cells ourselves.
Better to do it automatically inside CellularAutomaton (and add the
ability to customise the contents later).
Rename cell reader method

So that we can introduce a matching setCell().
Add a setCell() method
Use setCell() to set the initial state from outside