Improve TCPSocket read_nonblock & run TCP specs.

The main fix: read_nonblock(x) is allowed to return < x bytes even before EOF
as documented in the ruby docs for IO#read_nonblock

Most TCPSocket specs were being ignored because of a Proc.new that wasn't
called.

Also takes the liberty of decoupling TCPSocket specs from the bigger
dependencies such as mysql2, amqp, etc.