So I was using safe subtraction to fix the heads at 0, but BF itself
wraps heads around the tape if they overflow/underflow. This
completely changes the presentation of the simulation.
It does seem to affect since sim falls into a "stable" configuration
where cells rarely change quite quickly. I'm thinking of making a
better colouring algorithm to see if I can get better images.
The actual computation is embarrassingly parallelised - the only part
that requires a mutex is the picking of any two programs due to the
fact that both programs may be affected following a compute block.
This is why we do a uniqueness check in thread_pick.