Restore json parsing of incoming messages

Needed because websocket messages will come through as strings. But
the parsing can occur earlier within the faye subscribe callback,
rather than when the message is added to the queue.
Give messages a public id, and keep the true id field private. Give message titles a default value.