Split simulation into new utility modules.
Refactored Code

Moved Particle class into inner Particles.
Moved max_sigma(..) into diffusion_utils.py
minor name changes
Debugging code. Identified source of strange Intensity profile.

I am pretty sure that the Gaussian function is misbehaving.
The equation for gaussian defined by a covariance matrix is wrong.
Fixed gaussian function.

It was a pretty dumb mistake. I thought the diagonals of the
covariance matrix were sigmas not sigma^2.
Added wrapping around boundaries of the experiement.

Forgot to do this earlier; when I ran a simulation it
reported a total running time of 10^95 seconds. The
particles were diffusing away from the detection volume and
getting higher allowed time steps. I guess that the average
time step was growing exponetially with simulation steps.
Adding some reinforced learning techniques to optimize dt(position).