Initial commit for my diffusion limited aggregation project.

In the first instance I simulated dla using my brownian motion class.
A random walker would enter from the perimeter of a circle and make it's
way to the seed at the center of the screen. On finding the seed a new pixel
would be added and the aggregate would grow from there.

After that I created a class called BoolGrid. BoolGrid is a grid which stores
the value true or false at each grid site. Initially a seed is placed at the
centre of the screen and this site in the bool grid is set to true. A concentration
for the diffusing particles is set and the screen is populated with these particles.
At each time step the diffusing particles follow a random walk. After each step of
their random walks a check is made to see if any of them found the aggregate. In this
way the aggregate grows.

Currently the way in which the random walk is executed is not physical. The current
model allows two diffusing particles to hop into the same site. In order to rectify
this I need a way to determine first of all if a neighbour site is occupied and once
that is determined to figure out if the occupant is just another diffusing particle
or part of the aggregate. I don't think this can be done just with true or false.
Currently aggregated particle sites are true and everything else (empty space and
diffusing particles) are set to false. It seems that I would need a 3 state system
whose sites can be in one of the three states; Empty, filled with aggregate,
filled with diffusing particles.

In order to do these I will use the BoolGrid class as a template and generalise it
to a spin state grid. This could then be used for phase field type simulations.
Using just 4 bits would allow 16 different phases to be represented. For binary
systems exhibiting spinodal decomposition a phase field supporting floats at each
site to represent composition would be required.