Add line in .gitignore to exclude PyCharm files.
The socket must be module level global for the test to set options on it.
Import the entire ipaddr module, not just IPAddress.
Update docstring for SSLContextError.
Add dictionary of pre-defined error messages to SSLContextError.

 * This help us make informative messages for the user and logs, later when
   setUp() is called, so that we can explain, for example, why we can't test
   TLS and SSLv2/SSLv3 simultaneously.
Fix HostUnreachable docstring to have proper Sphinx formatting.
Remove UsageOptions to HandshakeOptions, and make arg help strings more informative.
Rename TLSHandshakeTest to HandshakeTest, since it's not only TLS.
Bump the version number on HandshakeTest, and rename the usageOptions attribute.
Make 'context' be a class-level attribute and give it a Sphinx :attr: docstring.
Create a host attribute for storing the --host option, and set self.ciphers.

 * self.ciphers should exist even if we didn't recieve any localOptions from
   the runner.
Fix #8440, set the self.host attribute when given the --host option.

 * Port option doesn't need to be fixed. It does what the option help string
   always said it does (which is actually slightly confusing and perhaps should
   be changed): it sets *all* the hosts' ports to --port. So, given a file of
   host:ports and a '--host 1.2.3.4:4343' cmdline option, if also given '--port
   443', it will check every host, both in the file and the cmdline directives,
   on port 443. This is useful for checking a specific port, like if we wanted
   to check TLSv1 on the IMAPS (993) port for every host.
Fix bug where conflicting SSL context choices was not explained to the user.