Add, use decorator for registering plugins.
Switch away from super() in plugin base classes

Derived classes were already not using super, and it turns out this is necessary
to allow different __init__ signatures in the same hierarchy (as would happen if
a plugin is defined in a mixin class that is used as a base class for both a single-frame
and a forced plugin).
Measurement tasks were ignoring doReplaceWithNoise config parameter

Added a dummy NoiseReplacer that does nothing that we'll use instead
of the real NoiseReplacer when doReplaceWithNoise=False.
Don't attempt to transform Footprints if there are none

Downstream code will still fail if there are no Footprints, unless
doReplaceWithNoise is False and the configured plugins don't need them, but that
can happen (especially in unit tests).
Merge branch 'u/jbosch/DM-1223'