Remove unnecessary toJSON calls, and simplify message sending when opening the conversation window

This removes the unnecessary toJSON() calls that we were doing for the message payloads.

It also reworks some of the conversation window opening to fix an issue that removing the toJSON call highlighted. The basic issue was that we were trying to pass a generic "context" to the Conversation object. This could have been one of two things, a payloads.offer or an object containing {user: <user>, peer: <peer>}.

In removing the toJSON() call, the payloads.offer object would not store and send the additional parameters that were being force into it.

Hence, we now pass explicit parameters to the Conversation object - spa, peer and offer. Although in some cases this duplicates the peer, it feels much better that we're explicit about the parts.

The Conversation window then formulates explicit messages to send to the conversation window.

Also removed in this PR is sending of login-success to the conversation window - as it is no longer required - and sending of the logged in user from the sidebar through to the conversation window - also not required as the worker knows this information.