We want to clearly show the difference between a "QueueEntry" or "QueueRow" and the actual ICommand/IMessage that it holds.
Rename DequeuedMessage<TMessage> to QueueEntry<TMessage> ?
Rename TMessage GetPayload() to DeserializeMessage() or GetMessage() ?