Encoding ack packets as binary

So that arbitrary data can be passed back and forth in ack callbacks.

Discovered that this might be desirable when writing tests for socket.io. Logic was -- why would a user not expect arbitrary data to work in callback ack functions? Now you can put buffers, etc in there ack callbacks and it works fine.

A consequence of this is that all ack packets are encoded in binary style now -- if they don't have binary data then this is maybe roundabout, but I figured that was better than adding another packet type (BINARY_ACK)? let me know