Return empty binary if there's no data to receive.

When you supply `0` as data length into `gen_tcp/3` it tries to
reveive all the data that is currently on the socket. If there is
none, it blocks until there is data.

With UPR messages it can happy that a message doesn't contain a
body. The header contains that information. So when we have a length
of `0`, we just want to have an empty binary. Hence `gen_tcp/3` is
wrapped into the `recv/3` function.

Change-Id: Iab01e37db80004fd4482cefcb4536cad24489c55
Reviewed-on: http://review.couchbase.org/33818
Reviewed-by: Volker Mische <volker.mische@gmail.com>
Tested-by: buildbot <build@couchbase.com>