[minor] Adding debug information using the `diagnostics` module
[minor] Allow bailout of forEach by returning false.

Just like you can do with a `each` in jquery
[minor] Only run the decoder if the passed data is actually an string
[minor] Allow async incoming message parsing
[minor] Better code-reuse for outgoing message parsing
[fix] Remove `connection` listener when bailing out of async forEach
[minor] Implement async transformers in the client.
[minor] Bunch of debug messages
[fix] Fixed double done references, thanks @lpinca
[fix] Have identical function signatures for server and client
[fix] Broken integration test
[test] Adding async outgoing tests
[codestyle] Add missing JSDoc for the `type` parameter
[major] Migrate to ejson instead of e-json as the package got renamed
[typo] Fixed typo
[minor] Made it more clear when to emit a readyStateChange event
[minor] Add a reason to the `readyStateChange` event, makes debugging easier.
[minor] Move the buffering to _write instead of .write

By moving the buffering we can flush the messages faster when we have a connection
as no more additional processing needs to happen.

In addition to that it gives us a bigger opportunity to write data as the message
transformation takes time. And this time can be used to wait for a connection to
establish. So if you're lucky, you can directly send the message.
Merge branch 'diagnostics'