- more work-in-progress implementing the config parser into logstash.
This comment probably breaks the crap out of 'agent' but 'agent2' is the
future.

agent2 should now successfully use the new config parser w/ codec
support.

No 'conditionals' support yet, but I will add that soon.

Rough list of changes:
- try to unify agent2 errors
- make codecs loaded the same way other plugins are (removes extlib,
  woot)
- make default values subject to validation (necessary for codecs)
- some style cleanup
- move more error messages into locales/en.yml
- fix LogStash::Event#to_s to use %{+...}
- committing work-in-progress
  I've mostly figured out what to do here and how to do it in a sane
  way.

  Still working on getting the parser behaving correctly, but
  conditionals are almost fully supported now (with method calls, etc)
Fixed a bug in compiling..

Works as expected for now:
  output {
    if [latency] > 0.5 {
      pagerduty {
        description => "Oh snap!"
      }
    }
  }

Result:
  if ((event["[latency]"] > 0.5))
    plugin("output", "pagerduty", "description" => "Oh snap!")
  end
- compilation succeeds now. agent2 is alive again (for now)
No more 'enable_codecs'
- fix output running
- call register in initialize for codecs
- add rubydebug and dots codecs (encode-only)
- make stdout use codecs instead of the janky prior implementation that
  uses many branches to pick the write print method.
  (will need to fix backwards compat, though)
Remove unnecessary code
- add a todu
- call register methods, silly goose.
- implement start_inputs
- respect an inputs 'threads' setting
- fix formatting (use >- for text that should flow continuously)
- Thread uncaught exceptions should be fatal, yo.
Deprecate or remove old-style conditionals now that branches are
supported in the logtash config.

Config settings existing in 1.1.13 and prior were marked deprecated.
Settings that have not been released were deleted (such as fields,
include_fields, etc).

I am so excited for conditionals.

Instead of:
  filter { grok { type => foo ... } }

You now do:
  filter {
    if [type] == "foo" {
      grok { ... }
      ...
    }
  }
- remove the old ragel grammar
- Move agent2 to agent. This purges the old crusty agent and replaces it
  with the new one. I expect bugs (like the test suite not working) but
  will fix those soon.
- finish up the agent2 conversion
- fix another agent2 thing