Support server callback in client side

Hi,

Thank you for developing this library. It's very helpful. However, there is a problem. In socket.io examples, server or client can emit a event and assign a callback function in parameter, for example:

```javascript
socket.emit('ferret', 'tobi', function (data) {
      console.log(data);
});
```
This works in your client library when client "emit" a event with callback. However, if server "emit" a event with a callback as the above example code. The client library has no way to send a ack packet with that message id. So, that callback function in server will never been called. I looked the socket.io spec and I updated my implementation for the library. I hope you can merge to the upstream.

I also add some test cases, you can reference that. If you have any question or concern, please let me know. Thanks