Structure the aggregator and flusher goroutines
Structure the aggregator and flusher goroutines

Another chunk of #300. Once this lands the final step will be to break out the
existing massive `run()` methods into useful helper functions now that
parameter-passing isn't such a pain.

In theory no functional changes; just slightly nicer code and stricter typing
around channel direction.

HelixEducation/sarama,jimmykuo/sarama,vrischmann/sarama,DataDog/sarama,Neuw84/sarama,VividCortex/sarama,pronix/sarama,remerge/sarama,crast/sarama,jepst/sarama,HelixEducation/sarama,raisemarketplace/sarama,Neuw84/sarama,scalingdata/sarama,kmiku7/sarama,crast/sarama,scalingdata/sarama,yangfan876/sarama,winlinvip/sarama,kmiku7/sarama,DataDog/sarama,raisemarketplace/sarama,jepst/sarama,Shopify/sarama,yangfan876/sarama,vrischmann/sarama,VividCortex/sarama,Shopify/sarama,winlinvip/sarama,cep21/sarama,remerge/sarama,mailgun/sarama,cep21/sarama,pronix/sarama,mailgun/sarama,jimmykuo/sarama