Be more explicit about request timeouts in producer_batcher

This is an effort to ensure sane semantics in the case of failures
Handle connection request errors in kofta:fetch/3
Handle lists:keyfind error when bad partition is specified
Rework message_set decoding to prevent badmatch on truncation

The previous implementation required incoming message sets to be
well-formed. Any message set truncated halfway through would cause
the various binary parses to badmatch.