use the Kahan summation algorithm to reduce noise

This keeps track of the error in accumulating new plots into the main
gathered image. When an image has been rendering for a while, the values
in the `GatherUnit` will be large, and the values to add -- in the
`PlotUnit` -- will be small. Floating-point operations (especially here
because I use 32-bit floats) lose precision at that point. By keeping
track of the actual value added, and storing the difference as
compensation in the next accumulation, accuracy can be improved.