Implement websockets client
- Add mode setting in soar-config.json to determine http/sockets mode
-
Handshake process: pass bearer token to authenticate socket
- Handle handshake messages cleanly
- Use WebSocket to implement connect / send / receive via socket
- Handle disconnect cleanly
- Handle reconnect
- Ensure http mode still works
- Rebase up to v0.1