Add WORKER socket

In response to https://github.com/squaremo/rabbit.js/issues/10.

I've made this a new kind of socket, rather than an option for e.g.,
PULL. I don't like modalities, and there isn't a suitable mechanism
for such an option anyway.

It's not that obvious how messages should be acked. It could be
attached to the message itself:

```javascript
var msg = worker.read();
doSomethingWithMessage(msg);
msg.ack();
```

This is pretty convenient, so long as you remember to keep the message
around, and to not call `#done` more than once (though it can be made
idempotent I suppose).

Or it could be attached to the socket:

```javascript
var msg = worker.read();
doSomethingWithMessage(msg);
worker.ack();
```

Actually there's two varieties of that latter; in the other, the
method is `worker.ack(msg)`, so messages can be acknowledged out of
order. That's probably quite important if `doSomethingWithMessage()`
is asynchronous; `#ack` could be invoked in a callback, and who knows
when that's going to happen.

In the `worker.ack()` variety, the socket keeps a queue of the
messages as they arrive, and they are acknowledged in that order. This
necessitates either care with ordering (which can be done, but it has
to be done by you), or one-at-a-time processing.

The tricky thing about the other two varieties is that they need some
property to be set on the message -- which is just a buffer, and is
easy to lose. In particular, setting the encoding of the socket will
give you a string instead of the buffer, so you'll lose `#ack` before
you ever had the chance to use it. Similarly piping `worker` into
another socket.

Therefore: I have adopted the `worker.ack()` style and made it the
application's problem to get the ordering right, as with REP sockets.
Merge branch 'worker_socket'

Conflicts:
	README.md