Wrap write method for better behavior.

Return true/false and emit 'drain' based on WebSocket's bufferedAmount
instead of the writable stream's highWaterMark.
Use binary mode for Buffers.
Emit 'error' event when there's an error.