Some preparations for making KisCurveCircleMaskGenerator vectorizable; the main part is obviously missing with this patch.
Yet the one point of this patch is that by adding final to KisCircleMaskGenerator::valueAt (and KisCurveCircleMaskGenerator::valueAt), the inner loops calls to valueAt in KisBrushMaskScalarApplicator<MaskGenerator, _impl>::processScalar (i.e. m_maskGenerator->valueAt) might now be devirtualized/compiled without a vcall (given a smart compiler), and might even be inlinable if valueAt is moved to the headers (given a smart compiler).
Calls to KisCircleMaskGenerator::valueAt amounted to 4% of the runtime while drawing with Layout_circle_soft in my profiling.