Inital version with heatmap, gradients and interpolation.

The interpolation bits are largely untested and will most likely
change to something a bit more readable and usable in the future.