Separating rendering logic from config processing logic

Separated rendering logic from config processing logic in a couple of heatmap renderers.

Note that I've included a double minimumValue parameter in both renderToBuffer functions which, I assume, is needed for calculating scaledLevelMinFreq and scaledLevelMaxFreq in the case where minimumValue is not 0. I noticed that this is not currently the way in which these scaled values are being calculated, and I'm wondering if that is a bug. If it is, it's probably worth fixing in a different PR (and probably by someone more knowledgable than me), so I haven't attempted it here.