Kafka consumer reliability 23252

Currently, errors in the callbacks of kafka message consumers kill the message
consumption loop. This commit catches and logs consumer callback errors. It
also introduces the option of returning a truthy value from the callback to
signal that the message set was not fully processed, and that the consumer
offset thus should not be updated. A falsy value is used to indicate success
in order to keep the behavior of current call sites.