Spatially varying kernel

1. Refactoring of kernel classes (Separated Interface and basic kernels from kernel combinators)
2. Introduced spatiallyVaryingKernels

(Should be merged after #93)
r.dot(r) can be stored outside of the for loop
also 1. / widthOnLevel^2 since m_baseScale is constant some time can be saved there too