Fix crash on sending a std::string larger than 2GB

The socket::send(std::string) function calls send_raw which has a signed integer
as the buffer length. With messages larger than 2GB this causes the size_t
passed to ZMQ to be a large positive value near
std::numeric_limits<size_t>::max(). On 64-bit systems this causes memory
allocation to fail because it is so large.

This is fixed by changing send_raw to take a size_t instead of an int for the
buffer length.