Add an optional response callback to Producer

Adds a callback that can be used to determine which messages failed to send and why.
Could `produce_partition_repsonse.error` ever be `nil`? If so, would that mean there was no error?