Fixes #617 and therefore fabric/fabric#1429.
Make NoValidConnectionsError picklable correctly
OTOH maybe this should've been (self.__class__, (self.errors, )).
(self.__class__, (self.errors, ))
Fix tests on Python 3.x
(This also fixes #678.)
Improve NoValidConnectionsError formatting
Because "Unable to connect to port 22 on or X.X.X.X" looks seriously
_weird_ with the blank space between "on" and "or".
Support pickling hypothetical subclasses
The new test I added started failing on Python 3.x on Travis because of #678, so I added a fix for that. I also couldn't look at that on or weirdness in the message text any more, so I fixed that too.
I've no clue about the Travis est failures due to lack of (vendored!) yaml2 on Python 2.x.
Changelog re #617, #679, #678, #685.
Also re fabric/fabric#1429 but IDK if Github will tickle that repo correctly :D
Looks like assertIn is python 2.7 specific, so I just replaced it with the old and just incredibly boring assert x in y so things work on 2.6. Shrug.
assert x in y
Cherry-picked back to 1.16 which is oldest affected branch. Just merged-up and pushed now. Thanks Marius!