Add two new optional channels to the ProducerConfig for handling failures and acks

...
FailedChannel, when provided will have all messages that are not acked
sent as type *ConsumerEvent. The application using this package is
responsible for reading from the failed channel or it will eventually
block.

AckingChannel, when provided will provide counts per partition, per
topic of acked messages after each flush. The application using this
package is responsible for reading from the acking channel or is will
eventually block.

This commit also includes a change for the error sent in the
DroppedMessagesError struct to the errorCb to be the block error instead
of the error returned from Produce.
Oh, OK, I just thought topic would be something you'd need.

`len(prb)` is, I believe, the total number of messages sent in this request - so you're not overcounting with replication, but you are overcounting if the request includes multiple topics/partitions. I'm not actually sure that there's a nice way to get the right count at the moment; the grouping is done in `prb.toRequest` and isn't returned (I guess you could dig it out of the `ProduceRequest` object itself, but that gets ugly when you try to deal with compressed messages).