+str #15142 Initial support for timing streams

This PR includes most notably:
* `timed(_.streamops)` wrapper that measures time between start of
   processing and end of it.
* `timedIntervalBetween(T => Boolean)` which measures time between
  matching elements appearing in the stream
* as well as `ExtraAstNode` which can be used to provide stream elements
  by 3rd parties. The timed elements are not part of the core API as
  such thanks to this building block