!str #15271 make transform() take a factory instead of Transformer

+ Makes reusing flows safe 
+ Adds timerTransform for ops which need TimerTransformer,
  for now it was the easier way out we should rethink if we need to
  specialise a lot on it or not.

Resolves #15271
So this is currently not very type-safe, you can pass-in a TimerTransformer into a `transform`, which will NOT work as expected. Shall we make `TimerTransformer` not extend `Transformer`, or deal with this in some other way?