INT-1197: Add support for WebSockets: client side

JIRA: https://jira.spring.io/browse/INT-1197

**DO NOT MERGE YET**

For me: this PR needs JavaDocs only.
All others (namespace, server, docs etc.) might be covered within other JIRAs.

@rstoyanchev, review this, please, too.
And here. It looks to me like critical bug. I can guess, that in most cases you get deal just with payloads, hence you always create new messages. But SI gets deal with messages and `headers propagation` is a normal behaviour.
I can, of course, workaround it in the `WebSocketOutboundMessageHandler` before delegate to the selected `SubProtocolHandler`, but can't it be fixed some other way in the concrete `SubProtocolHandler`? E.g. `StompEncoder` might just override any provided headers and populates new headers based on message to send.