Adding support for SSL certificate verification.

Possible issues: Needing backports.ssl_match_hostname - solution, recoding this functionality shouldn't be horribly difficult, as it's a case of seeing if matching `pypi.python.org` with:

    {'notAfter': 'Jun 29 19:00:42 2014 GMT', 'subjectAltName': (('DNS', 'pypi.python.org'), ('othername', '<unsupported>')), 'subject': ((('commonName', u'pypi.python.org'),),)}

Is okay according to the SSL spec.

Second issue is Python 2.5 compatibility. The issue here is the `ssl` module needed to wrap the socket apparently isn't present in 2.5, which is annoying. Personally I think we shouldn't hurt the security of people with up-to-date systems to maintain parity with legacy systems, however, one proposed solution is to disable the new stuff for Python 2.5 (perhaps with a warning?), or require the `ssl` module to be installed (still annoying).

Also commits need cleaning up.