change producer send-message to receive a KeyedMessage rather than topic/value; rename keyed-message to just message and have pulled message-value out of send-message: clients should know whether they're providing a byte array or not.
delete MessageValue protocol- clients should know whether they're providing a byte array or not and they can implement their own protocols.