Missing error handling in m2.ssl_ctx_new

See https://bugzilla.redhat.com/show_bug.cgi?id=879043

In FIPS mode:

Traceback (most recent call last):
>  File "echo.py", line 23, in <module>
>    ctx = SSL.Context('sslv3')
>  File "/usr/lib64/python2.7/site-packages/M2Crypto/SSL/Context.py", line 47, in __init__
>    map()[long(self.ctx)] = self
> TypeError: long() argument must be a string or a number, not 'NoneType'

sslv3 is disabled in FIPS mode, so it's fine that this doesn't work,
however a TypeError is unexpected.

Non-FIPS reproducer:

> >>> import M2Crypto
> >>> M2Crypto.m2.ssl_ctx_new(None)
> >>> M2Crypto.m2.err_reason_error_string(M2Crypto.m2.err_get_error())
> 'null ssl method passed'

with FIPS, the error is 'only tls allowed in fips mode', which is
fairly nice.

The attached patch adds error checking and converts the NULL
return value into a proper exception.

https://bugzilla.osafoundation.org/show_bug.cgi?id=13098
Add support for SNI

Add the possibility to set the SNI option (OpenSSL:
SSL_set_tlsext_host_name) to support virtual hosting of servers.
For example all major browsers support this today, and M2Crypto
should be able to use this feature too.

This patch adds error handling (try e.g. setting a very long host
name).

For the record, this is only a minimal SNI support: no way to see
whether the server has recognized/accepted the name, no way to
implement the server.  But it's a clear improvement.

Also, no automated test at this time (a colleague may contribute
one later), and no support for older OpenSSL versions (I have no
need for it and lack a convenient way to test).

(This will be applied in Fedora, see
https://bugzilla.redhat.com/show_bug.cgi?id=1029246 .)

Hubert Kario has suggested that the hostname parameter should be
optional, defaulting to the hostname used to initialize the
Connection (and used for certificate subject matching).

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