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.
This shouldn't be a regular plugin we publish. Let's put it in spec/fixtures/...something... so it's not exposed in docs or to users? There's no need, imo, for users to see this plugin. 

Thoughts?