PYTHON-718 - Use SSLContext when available.

This commit also introduces a fake SSLContext class
for use in python versions that don't provide one.