Track left and right indices, not origin
Pass initial cell states into CellularAutomaton constructor
Pad with empty cells before stepping

This avoids the special-casing of the (potential) new cells on the left
and right ends.
Trim dead cells from both ends after each step