Change to constructor and binary support ported from 2.x.x branch

Changed WebSocket constructor to allow passing subprotocol as second argument and implemented binary send/receive via ArrayBuffer and Blob