WebSockets - implementation proposal for issue #125

This implementation is based solely on existing Netty's WebSockets implementation.

Client example:
```java
WebSocketClient<WebSocketFrame> rxClient = RxNetty.newWebSocketClientBuilder("localhost", port)
            .withWebSocketURI("/websocket")
            .withWebSocketVersion(WebSocketVersion.V13)
            .build();

rxClient.connect().flatMap(
    new Func1<ObservableConnection<WebSocketFrame, WebSocketFrame>, Observable<Void>>() {
        ....
    });
```

Server example:
```java
RxServer<WebSocketFrame, WebSocketFrame> server = RxNetty.
        newWebSocketServerBuilder(port, new ConnectionHandler<WebSocketFrame, WebSocketFrame>() {
            @Override
            public Observable<Void> handle(
                final ObservableConnection<WebSocketFrame, WebSocketFrame> newConnection) {
                    ....
                })
    }).build().start();
```

Do you want to use promise.tryXXX() methods instead of setXXX()? Otherwise, if this is already done, this will thrown an IllegalStateException.