Improved noise

Implements two new noises (`cImprovedNoise` and `cInterpolNoise`) and refactors the noise architecture for greater variety and flexibility. `cOctavedNoise` is pulled out as a template so that any underlying noise can be used for the octaves.