Fixes for FIPS mode

The attached patch modifies the m2crypto test suite to avoid
prohibited algorithms and keys sizes when run in FIPS mode with
recent openssl versions.

It also adds/fixes error handling in some of the FIPS-restricted
cases.

https://bugzilla.osafoundation.org/show_bug.cgi?id=12972
Allow overriding SSL.Connection.postConnectionCheck from m2urllib2 users

The attached patch adds a 'post_connection_check' member to
SSL.Context, and uses it in SSL.Connection to set up
SSL.Connection.postConnectionCheck.  This allows users of
m2urllib2.build_opener() to override the postConnectionCheck.  In
turn, overriding this check is necessary in some situations when
intentionally connecting to a SSL server using an incorrect host
name.

I originally wanted to make the post_connection_check a separate
parameter, passed from m2urllib2.build_opener down through the
stack (HTTPSHandler->{Proxy,}HTTPSConnection), but it impossible
to add additional keyword arguments to build_opener without
breaking existing programs; e.g.  urlgrabber calls:
   m2urllib2.build_opener(self.ssl_context, *handlers)
Adding another keyword argument would assign handlers[0] to this
keyword argument.

https://bugzilla.osafoundation.org/show_bug.cgi?id=12973
Fix S/MIME documentation and examples

openssl 1.0 requires applications to more strictly follow the
S/MIME API definition.  This used to cause problems in
test_smime.py, which were fixed in 0.21, but m2crypto still ships
incorrect documentation and examples.

This patch fixes all incorrect instances about which I know. The
only module I didn't test is ZSmime - but it seems to be correct
based on reading the code.'

https://bugzilla.osafoundation.org/show_bug.cgi?id=13020