Display more info when SSH errors occur

This is in the same vein as #9603, but it is more ambitious in that it attempts to display more helpful info for a number of different SSH errors.

Sample outputs:

```
fatal: [vagrant] => SSH Error: Host key verification failed.
    while connecting to 127.0.0.1:2222
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
```

```
fatal: [vagrant] => SSH Error: ssh: connect to host 74.125.239.52 port 22: Operation timed out
    while connecting to 74.125.239.52:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
```

```
fatal: [vagrant] => SSH Error: ssh: connect to host 192.26.5.1 port 22: Network is unreachable
    while connecting to 192.26.5.1:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
```

```
atal: [vagrant] => SSH Error: Permission denied (publickey,password).
    while connecting to 69.163.167.30:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
```

```
fatal: [vagrant] => SSH Error: ssh_exchange_identification: Connection closed by remote host
    while connecting to 74.125.239.52:80
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
```

```
fatal: [vagrant] => SSH Error: bad permissions: ignore key: /Users/marca/.vagrant.d/insecure_private_key
    while connecting to 127.0.0.1:2222
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
```