SSL.File: Fail read() on ALERT.

read() now fails with EIO if the peer has aborted the connection
with a fatal alert.

Also sets errno to EAGAIN in nonblocking read() if no data available
and not closed by peer.
Unknown packet type is a fatal error.
We can just use Gz.compress and Gz.uncompress as we are not streaming.
Fail when uncompressed packet > 2^14 bytes
Zero size fragments are not allowed for handshake, alert and changecipherspec packets.
Less code.
SSL.Session: Keep track of the protocol version.

SSL.Cipher.CipherSpec::verify() needs the version in the session
object to be up to date (or it will break with TLS 1.2 or higher).

Fixes interoperability with https://google.com/.