Fix #173: HTTPS request doesn't work when disable_ssl_certificate_validation=True

Sets `SSLContext.verify_mode` to `ssl.CERT_OPTIONAL` if `disable_ssl_certificate_validation` is `True` otherwise it is set to `ssl.CERT_REQUIRED`.
Enabling TLS and ssl protocol version (with or without disable_ssl_certificate_validation=True) is .. IMO another issue.  An issue was created recently about that #287 , and ive found an earlier one, even a patch.

Regarding the certificate verification aspects of your patch, ...

ssl.CERT_OPTIONAL does not seem like a good fit for "disable_ssl_certificate_validation", as "In this mode no certificates will be required from the other side of the socket connection; but if they are provided, validation will be attempted and an SSLError will be raised on failure."
< https://docs.python.org/3.2/library/ssl.html#constants ; 3.3 and 3.4 says the same >

That means SSL exceptions are going to occur if the server sends the wrong certificate...?

And your patch leaves check_hostname=True.

"If context is specified and has a verify_mode of either CERT_OPTIONAL or CERT_REQUIRED, then by default host is matched against the host name(s) allowed by the server’s certificate."

Again, this means SSL certificate errors will occur, which seems to be against the intention of "disable_ssl_certificate_validation".
IMO disable_ssl_certificate_validation is an explicit "I cant be bothered with security", which is OK in some situations, but the real solution is to provide a custom ca_certs/cert_file, or allow known good scenarios like 'allowed self-signed certificate'.