Setting SO_KEEPALIVE on socket connections to Riak

SO_KEEPALIVE is now set on all socket connections to Riak. This allows the TCP to keep the connection alive during long periods of inactivity. This affects some of our clients who will leave some connections inactive, and then get exceptions when they try to use the socket.

Also did a minor refactor of recv_pkt on the transport to rely on recv_pkt on the connection object instead.
Previously the line `nmsglen = conn.recv(4)` was assumed to always return 4 bytes, but recv() semantics only guarantees that up to 4 bytes will be returned. By using a generic recv_all() method we block until we get the data we need.