initial binary support encoding
replaced custom binary encoding with msgpack
browser style msgpack
Added Blob support and made encoding async

In order to add Blob support to Socket.IO (part of the larger binary
support), the encode function was made asynchronous (it now takes a
callback) because blobs are converted to ArrayBuffers via an
async FileReader method.

Tests were also added to test the encoding and decoding of Buffers and
ArrayBuffers. The reason there is a new special test method to test
encoded vs decoded ArrayBuffers is that decoded ArrayBuffers in node
don't have the slice function (it is native code that can't be
transmitted over msgpack). Not sure how big of an issue this is.

Because of this new async, we need to now worry about buffering, etc.
Ideally this would all be engine.io level, but dang blobs.

Blob support is very close to file support -- update on that soon.
Added support for reading File objects

Uses the same code as the Blob stuff before (fileReader can take a
Blob or File, and make an ArrayBuffer from either).

Browsers can now directly pass file handles because why not, probably
more useful than blobs.
updated debug
using isarray
Base64 decoding support

Added a function that takes the base64 encoding of our event packets and
decodes them into packet json with correct type, namespace, and data args,
where data args are defined as [eventName, {base64: true, data: base64string}].
Then we leave it up to the user to handle something where base64 is true.

This bit of code is only relevant for very old browsers.
better msgpack browser module
added binary info to docs
Added browser field to package to reduce build

Also made some stylistic changes based on guille's comments on PR
so far.
merged new dependencies into upstream
Merge pull request #3 from brishin/add/binary-support

Add/binary support