Please review, any comments are welcome. The docs still need improvement, working on that.
Trying to do this one from the specs results in the same sorry mess as Engine.IO. So this again is the result of "specs" combined with a lot of protocol reverse engineering.