Fix leaking FD

See #1289 
This seems OK, but a bit manual.  Would it be cleaner, maybe to do something like:

ProxyLoop() {
  ...
  go proxyTCP(inConn.(*net.TCPConn), outConn.(*net.TCPConn))
  ...
}

func proxyTCP(in, out *net.TCPConn) {
  var wg sync.WaitGroup
  wg.Add(2)
  go copyBytes(in, out, &wg)
  go copyBytes(out, in, &wg)
  wg.Wait()
  in.Close()
  out.Close()
}

func copyBytes(in, out, wg) {
  defer wg.Done()
  // copy...
}