Replace successes channel with individual promises

Makes tracking success of individual messages much simpler and friendly to
order-dependent things. Also provides a more efficient solution to the first
half of #187 (it lets us get rid of the mutex in SimpleProducer).

@pjvds @wvanbergen

this is not quite ready as-is:
- [ ] godoc needs updating
- [x] `retryMessages` needs to respect `Msg.Promise`
- [ ] replace `AckSuccesses` with `OnlyPromiseErrors` for users who don't care about nils on success
- [ ] needs a test where multiple distinct promise channels are used (verifying that the right successes/errors are sent on the right channels)
- [ ] needs a test where promise channels *aren't* used

but those are easy if we can agree that this makes sense as a solution?