Simplify states slightly.

And respect forceFlush messages in the batcher
Rename forceFlush to orderMarker

it doesn't actually force a flush, so the old name was confusing
doc
Implement AckSuccesses and SimpleProducer

AckSuccesses causes a nil error for every successful message, making it possible
to be fake synchrony by listening once after every send (assuming no buffering).
Wrap this logic in a SimpleProducer, and migrate the old Producer test to be
a SimpleProducer test, since the API is closer.
Respect AckSuccesses even if RequiredAcks is 0

In this case there is no response, so we must treat everything as a success.