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.
Hi Rossen! Would be better, if we continue this concrete case here. 
The test doesn't fail because I added `HeaderFilter` (the next three lines).
This test accepts message on `clientInboundChannel`, changes `payload` and sedns reply to the `clientOutboundChannel`. Over `SubProtocolWebSocketHandler`, BTW.

Since SI gets deal with messages it carries headers from one message to another and they are copied by default. So, and inbound STOMP `content-length` header comes to the last `TestService#handle`, which, in turn builds the new `payload` and send the message to the STOPM handler to be converted to STOPM frame for WebSockete sending. 

And here `StompEncoder` populates all incoming headers and builds new based on the payload. 
On the client part we end up with issue, where STOMP frame has two `content-length` headers.

It doesn't happen with SF Stomp, because you get deal just with `payload` on `@MessageMapping` and all incomming headers are lost, and the new message to send for `StompEncoder` is clean from redundant headers.

Right, it might not be a bug from SF perspective, but we should determine how to ahead.

Any clues how to be?