feat: add cross-platform support for Node.js and browser environments
Replace hard dependencies on Node.js APIs (ws, Buffer, EventEmitter)
with a platform adapter pattern that auto-detects the runtime and uses
the appropriate WebSocket implementation. Move ws to optional
peerDependencies so browser consumers never pull it in.