Rewrite nrepl connection logic

- Extract networking functionality (`nrepl-connect`, `nrepl--direct-connect`,
  `nrepl--ssh-tunnel-connect`)

- When `nrepl-force-ssh-on-remotes` is nil try a direct connection with remote
  hosts before attempting a ssh tunnel.
It's really not the same sentence. The first is a label of the message. I stole it from tramp. It looks like this:

```
nREPL: Establishing direct connection to localhost:43932 ...
nREPL: Direct connection established.
nREPL: Connection closed: connection broken by remote peer
```

It could be a dash there. Or the message can be between the parentheses:

```
nREPL: Connection closed (connection broken by remote peer).
```