Compiler: Fixed NULL-dereference in new type checker.
SSL.sslfile: Added query_suite().

Added support for getting the active SSL cipher suite.
Testsuite: Check that we get the expected SSL suite.
Don't accept anything after base64 padding.
SSL: Added some support for Suite B (RFC 6460).

Adds API for simple configuration of Suite B compliance.

NB: There are still some issues left for full compliance.
Set fragment to 0 between each fragment as paranoia. This prevents stale fragment data in case of packet parse error.
No need to fake fragment data if packet parsing failed. It's not a timing attack target, since the packet frame is unencrypted, and we don't even call this code if packet parsing fails.
alert -> Alert.
It's really session, not connection we want.
Syntax suger.
SSL.session: Removed extraneous sorting of the cipher suites.

The server now selects suites in the order specified by
preferred_suites.

This fixes the Suite B testsuite failures.
Improved types.
Merge handshake and connection into Connection. Then make that as a base class for ClientConnectio and ServerConnection, that assumes respective role.
Compile fixes.
Trivially move out hello_request and client_hello.
Allow chaining of put calls to struct.
Fix variable names and stop using @decl.
SSL.Connection: Moved handle_handshake() to {Server,Client}Connection.

Splitted the handshake handling into server and client specific code,
and moved it to the respective corresponding module.
SSL.Connection: Unified the handshake states.

Now that there is separate code for the server and client
handshake state-machines, there's no reason for them to
have different STATE_* codes.

Also splits and moves finished_packet() to {Client,Server}Connection.
Throw a recognizable object from ADT.struct in case of parse errors.