[Fix #822] Rewrite nREPL connection logic

- Extract networking functionality (`nrepl-connect`, `nrepl--direct-connect`,
  `nrepl--ssh-tunnel-connect`)

- When `nrepl-force-ssh-for-remote-hosts` is nil try a direct connection with
  remote hosts before attempting a ssh tunnel.