Preparing WebSocketManager connection pattern

Test reimplemented with MockConnection implementations.
Test uses bucket to trigger connection

WebSocketManager methods made protected so communication is required to happen via the Connection object.
AndroidClient now handles building WebSocket connections

WebSocketManager now uses the Connection/ConnectionProvider/ConnectionListener set of objects to decouple the actual networking implementation.