veyron/runtimes/google/ipc: refactor Listen loop code - back from the rollback...

- deleted commented out old code.
- cleaned up Listen implementation, the only behavioural difference
is that we now publish both local+proxy addresses for objects that
are being proxied.
- cleaned up the proxy retry loop.
- made it possible to use the proxy without a local listener.
- Dial takes a timeout argument.

Change-Id: Ia7598de824593b937d9d562f0597c7dc4100f88e
diff --git a/runtimes/google/ipc/client.go b/runtimes/google/ipc/client.go
index e828b51..8451c3e 100644
--- a/runtimes/google/ipc/client.go
+++ b/runtimes/google/ipc/client.go
@@ -247,9 +247,11 @@
 			return nil, verror.NoExistf("ipc: Resolve(%q) failed: %v", name, err)
 		}
 	}
+
 	// Try all servers, and if none of them are authorized for the call then return the error of the last server
 	// that was tried.
 	var lastErr verror.E
+	// TODO(cnicolaou): sort servers by sensible metric.
 	for _, server := range servers {
 		flow, suffix, err := c.connectFlow(server)
 		if err != nil {