[minor] Improve the reliability of the port number extraction when `url.port` is undefined
[doc] Fix a misleading sentence and add missing documentation for `primus.open`
Merge pull request #220 from lpinca/fix/port-extraction

Improve the reliability of the port number extraction when `url.port` is undefined
Merge pull request #224 from lpinca/fix/doc-sentence

Fix a misleading sentence and add missing documentation for `primus.open`
[fix] Disable the query string when connecting to a Unix domain socket
Merge pull request #225 from lpinca/fix/unix-domain-connection

Disable the query string when connecting to a Unix domain socket
[fix] Close the server with a try/catch to prevent thrown errors when the server isn't started.
[feature] Add ability to use `primus.forEach` asynchronously
Merge pull request #227 from lpinca/add/async-foreach

Add ability to use `primus.forEach` asynchronously
[fix] Reduce the amount of process.nextTick's we use -- It's bad for I/O performance.
[fix] Ensure that the disconnection event is called when the server is destroyed.
[test] Improved test for the async forEach to correcly iterate and count connections
[test] Remove the interval all together. Dammed timers, how do they work  (ノಠ益ಠ)ノ彡┻━┻
[test] Restore the interval and fix async forEach test by using non overlapping timers
[fix] Properly clean up connections by setting empty handles or removing them.

The issue here is even if we've closed the connection and nulled the variable it
can still emit events. Like a error or close event as we've closed it. To prevent
these event leaks we need to remove all our handlers before we null the socket.
[fix] This addresses the close/open/close/open test case.

The problem was that when you close the connection server side the spark will:

1. Send a `primus::server::close` packet to che client
2. Close the connection.

The client would then receive the `primus::server::close` packet first but as our
`primus.emits()` methods add a timeout to prevent websocket crashes it doesn't get
parsed and executed directly. While this messages is waiting in it's setTimeout
state the connections gets closed and will emit an end event which is also delayed.

Finally it's time for the `primus::server::close` to get processed and we close the
connection by doing a `primus.end()` this sets the `readyState` to closed and emits
the `end` event. In our test case we directly call `.open` again to re-start the
connection. This sets the `readyState` to `OPENING` again instead of closed.
connecting takes some time and during that our emitted `end` event gets processed
as the setTimeout ended. It calls the `incoming::end` listener and sees that the
connection is not closed as it checks the readyState handler. So it proceeds with
closing the connection which we just opened.

So the solution for this is to queue up the incoming `server::close` packet and
truely close the connection without triggering a reconnect.
Revert "[test] Restore the interval and fix async forEach test by using non overlapping timers"

This reverts commit f8a80dfbcc1a4f7e40c00f3b03f53de5fb8cebd3.
Merge pull request #229 from primus/open/close

[fix] This addresses the close/open/close/open test case.
[deps] Bump dependencies
[codestyle] Fix bad indentation in the JSONH parser
[doc] We will never support Socket.IO 1.0