[WIP] Add filter and label

The spec is here: https://github.com/fluent/fluentd/wiki/filter_label

Here are major changes:

- Introduce Agent / RootAgent / Label and some Engine methods are forwarded to RootAgent
- Introduce Error Stream with `<label @ERROR>`
- Add Filter class

```rb
class Filter
  def filter(tag, time, record)
    # for record_reformer like record mutating plugins
  end

  def filter_stream(tag, es)
    # for grep like EventStream mutating plugins
    # filter_stream calls filter by default
    # Should return EventStream
  end
end
```

- Input and Output now have `router` attribute. After replacing `Engine.emit` with `router.emit`, plugins can use `@label` feature.