Plug WebSocket.terminate timeout leak

If a caller tracks server connections (`WebSocket`s) on their own and cleans them up manually right before calling `WebSocketServer.close`, the calls to `terminate` (one from the caller closing the connection manually, and one from the server loop doing it) can happen so quickly that the internal state is `WebSocket.CLOSING` in both calls.  

This means that the second call will over-write the first call's `this._closeTimer`.  That means a timer gets leaked, and holds the program open for 30s.  Not a huge problem, but a confounding one.

This one-liner will prevent that.  The "right" answer is probably to update the state machine, but as far as I can tell, this timeout is the only collateral in this scenario, so the one-liner should be sufficient in practice.
implement permessage-deflate extension
add tests for permessage-deflate
Correct year in history
Merge pull request #410 from woutermeek/patch-1

Correct year in history
fix an error on Node 0.8
Merge pull request #409 from nkzawa/feature/permessage-deflate

Support permessage-deflate extension
[dist] 0.6
Merge pull request #342 from toejough/patch-1

Plug WebSocket.terminate timeout leak
[fix] Disabled perMessageDeflate
[dist] 0.6.1
[dist] 0.6.2
fix an error when permessage-deflate is enabled and closing socket
Merge pull request #411 from nkzawa/patch-0

Fix an error when permessage-deflate is enabled and closing socket
[dist] 0.6.3
Documented websocket.upgradeReq

In my attempt to associate a websocket with a specific client I had to override `websocket.handleUpgrade` and call it abstractly inorder to get both the request and the websocket in one place. If I would have known that it was available, I wouldn't have to code so dirty for something I think many people would need.
Merge pull request #414 from formula1/master

Documented websocket.upgradeReq
tests call WebSocket constructor with String/Array protocols argument

This breaks tests, but they will be fixed by the next commit.
Add handling of protocols in initAsClient function

The Sec-WebSocket-Protocol are not included in header.
So far it is possible to override this functionality calling new WebSocket("ws://URL",{protocol:"USER DEFINED PROTOCOL"})

(cherry picked from commit c08b70feca5cb2745306b1f6e165490875117c15)

resolves #323
resolves #290
resolves #298
lib/WebSocket.js: remove TODO about subprotocols

This was added in 887ebcb (#227), but has since been done.