friendlier error messages

collect the errors we get when trying to connect to hosts, and then
re-surface them if we finally throw.
fix up the worst of the tests

there's still broken-ness in the unplanned failover sections, though.