feature/filter flushing execution

this PR from the shared branch will replace #1260 

this should implement correct behaviour for filter flushes.

```
filter {
  one { }
  if ... { two { } }
  else { ... }
  three { }
}
```

In the above, if 'two' emits an event periodically (via flush), then *only* 'three' should receive it.
Yeah. I think the noop filter shouldn't be published either. Both are primarily for testing or dev example, right? Users don't need it. I'd be open to moving spool to a spec fixture to validate flush behavior as well as in another PR moving noop to spec/fixtures as well.