Adjust output runners to PluginRunner API.
First steps towards redesigning the pipeline flow to be plugins handing
packs through the pipeline over channels, rather than a driver function that
does the work. Only partly done, has commented out code that's not yet
converted, probably has not-removed code that's no longer called, tests
totally broken, but it compiles, starts, accepts messages, and sends them all
the way through in trivial cases (i.e. no filters and a single output).
Move ChainRouter out of config.go into its own file.
Add message payload, and output total msgs sent at shutdown.
Make sure we're copying from the input buffer
Start the ChainRouter when we create it, don't make the client do it.
Gotta use the new message API.
Don't need to pass the RecycleChan in, it's already available through the
PipelineConfig.
Centralize decoder management w/ mappings from Header_MessageEncoding
to specific decoders.
first pass at getting MGI to work w/ hand-off pipeline design
remove debug stuff
Gotta use attribute getters on the protobuf generated message object.
make sure we Zero a pack before reusing it, and make sure we specify that
we need a new one if we use the one we had.
Whoops, can't dereference a string, maybe I should've tried to compile
before committing. :P
Get MGI loaded at startup.
 Very first steps start of fixing the tests for the handoff-pipeline redesign.
Change decoder registration code so that mappings btn decoders and
specific Heka protocol Header_MessageEncoding values are specified in the
config file rather than code.
Merge branch 'dev' into features/handoff-pipeline

Conflicts:
	pipeline/pipeline_runner.go
Resolve remaining merge conflict issue.
Adapt log file input to work with new system.