16*10 grid, of 38*38 icons.

Each cell can have 0, 1, 2, 3 (natural range), 4,5,6,or 7 (overloaded range)
atoms in it.

Cells in the corners have natural range of 0-1
Cells on the edges have natural range of 0-2
Cells anywhere else have natural range of 0-3.

When a cell contains more atoms than its natural range, they explode;
As many atoms as are needed to add exactly 1 atom to each adjacent cell,
are removed from that cell (they go to the adjacent cells). In most cases,
this leaves the exploded cell empty, but if more than 1 cell went into
the cell at once, there could be more left over.

Hypothesis: It is impossible for more than one atom to be sent from one
cell to one of its neighbouring cells, but still, after any cell
explodes, it won't be left with an overloaded range of atoms left in it.

Grid is 1d array:
 int cells[160];
 To work out column number of index: i & 16
 To work out row number of index: i/16 (>>4??).
 Then columns:0-15, rows: 0-9.
 Index of cell above i== i-16;
 Index of cell below i== i+16;
 Index of cell left of i ==i-1;
 Index of cell right of i ==i+1;

 Each time a cell explodes, work out which cells atoms will go to, and
 how many will be left.


