Adds message delay support

This patch adds delay support for message.
It breaks bc by changing payload semantic, i.e. payload is still the message body for service layer, but user layer must now use data property of the message object to get business message.