Bacteria
Each newly painted point is a distinct object in the matrix. Checks to find unoccupied neighbouring fields are done via the `MatrixObject.passable` property of each object (a Bacteria has `passable` set to `false`).
This version fills the entire screen.