SSL.ClientConnection: Keep track of the session identity.
SSL.ClientConnection: Added some support for resuming sessions.
SSL.File: Added API for resuming sessions.
SSL.File: Don't purge sessions on close notify failure.

When closing the connection it is common that the peer has closed the
connection directly after sending its close notification packet without
waiting for a corresponding close notification from us. This is to be
expected, and is not a reason for us to purge the session.
SSL.ClientConnection: Added missing constant.
SSL.Context: purge_session() now works client-side too.
SSL.Context: Ensure that session identifiers are unique.

Now uses Standards.UUID to generate the session identifiers.

This works around a bug in the testsuite where session identifiers
apparently could be reused.
SSL.File: Improved API for resuming sessions somewhat.
UUID v4 is essentially just an random string, so let's use random string directly instead.
OO more.
SSL.Session: Default to creation with empty id.

This is useful for client-side SSL, where there typically isn't
a useful sessionid at start.
SSL.ClientConnection: Use a plain Session if none is provided.

This avoids extraneous caching of client side sessions in
a cache where they will never be looked up.
Testsuite: Test SSL session resumption.
Image.PNG: handle extra IDAT data more gracefully