Java implementation of Conway's Game of Life, using the visitor design pattern