Make `ssl` module implementation injectable in SSL-related classes, remove contrib.pyopenssl and packages.ssl_match_hostname in favor of backports.ssl

Also tests both the standard and backported `ssl` implementations, skipping
if unavailable.