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.
I dont' think Filters::Base should have this config setting. It could have a method `#periodic_flush?` taht returns false by default, and Multiline can override it and have it return `@periodic_flush` (or something like it).

This way it doesn't appear that 100% of filters can flush, and for metrics filter flushing is *not* optional at this time, so this setting doesn't make sense there.