Change multi-consumer unexpected error handling
Change multi-consumer unexpected error handling

Previously on unexpected errors (i.e. missing messages in the response) we would
bubble the error to the user and otherwise carry on. These kind of errors should
only happen when talking to misbehaving brokers, and while an argument can be
made that we should just abort that broker connection on such an error, we
didn't want to disrupt working connections either if it was just the one
topic/partition that was misbehaving.

In this version, we redispatch the partition as well. This has a couple of
advantages:
- if the broker itself is bad for some reason, we'll end up redispatching *all*
  the partitions assigned to it, which should implicitly bounce the broker
  connection
- if the problem is out-of-sync metadata or leadership in the broker, this gives
  the partition a chance to end up on some other more sane leader

In the case of a truly broken cluster, we'll end up bouncing between metadata
updates and fetches, which probably won't be a big deal.

rafrombrc/sarama,winlinvip/sarama,mailgun/sarama,LastManStanding/sarama,jimmykuo/sarama,remerge/sarama,pronix/sarama,DataDog/sarama,scalingdata/sarama,vrischmann/sarama,raisemarketplace/sarama,remerge/sarama,winlinvip/sarama,cep21/sarama,VividCortex/sarama,mailgun/sarama,LastManStanding/sarama,yangfan876/sarama,scalingdata/sarama,DataDog/sarama,aybabtme/sarama,yangfan876/sarama,jepst/sarama,raisemarketplace/sarama,Neuw84/sarama,kmiku7/sarama,crast/sarama,HelixEducation/sarama,kraveio/sarama,crast/sarama,uovobw/sarama,vrischmann/sarama,HelixEducation/sarama,uovobw/sarama,jepst/sarama,betable/sarama,kraveio/sarama,jimmykuo/sarama,betable/sarama,pronix/sarama,cep21/sarama,kmiku7/sarama,VividCortex/sarama,Shopify/sarama,Neuw84/sarama,rafrombrc/sarama,Shopify/sarama,aybabtme/sarama