Handshake

Fixes #67, #105, #108 (thanks to awesome async.js), #94, #110, #107, and #103. Basically just a ton of bugfixes all over the place.

The branch is called "handshake" because I introduced a client<->server handshake in order to fix #94 and #105.