Use abstract SocketListener class

Makes the code more general and not directly tied to specifically
TCP sockets.
diff --git a/common/network/Socket.h b/common/network/Socket.h
index 7a30cac..382b270 100644
--- a/common/network/Socket.h
+++ b/common/network/Socket.h
@@ -99,6 +99,8 @@
     // if one is installed.  Otherwise, returns 0.
     virtual Socket* accept() = 0;
 
+    virtual int getMyPort() = 0;
+
     // setFilter() applies the specified filter to all new connections
     void setFilter(ConnectionFilter* f) {filter = f;}
     int getFd() {return fd;}
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx
index 9603c38..4287132 100644
--- a/common/network/TcpSocket.cxx
+++ b/common/network/TcpSocket.cxx
@@ -532,7 +532,7 @@
 }
 
 
-void network::createLocalTcpListeners(std::list<TcpListener*> *listeners,
+void network::createLocalTcpListeners(std::list<SocketListener*> *listeners,
                                       int port)
 {
   struct addrinfo ai[2];
@@ -562,7 +562,7 @@
   createTcpListeners(listeners, ai);
 }
 
-void network::createTcpListeners(std::list<TcpListener*> *listeners,
+void network::createTcpListeners(std::list<SocketListener*> *listeners,
                                  const char *addr,
                                  int port)
 {
@@ -594,11 +594,11 @@
   }
 }
 
-void network::createTcpListeners(std::list<TcpListener*> *listeners,
+void network::createTcpListeners(std::list<SocketListener*> *listeners,
                                  const struct addrinfo *ai)
 {
   const struct addrinfo *current;
-  std::list<TcpListener*> new_listeners;
+  std::list<SocketListener*> new_listeners;
 
   initSockets();
 
diff --git a/common/network/TcpSocket.h b/common/network/TcpSocket.h
index c1b142f..74ff4c5 100644
--- a/common/network/TcpSocket.h
+++ b/common/network/TcpSocket.h
@@ -80,16 +80,17 @@
     virtual void shutdown();
     virtual Socket* accept();
 
+    virtual int getMyPort();
+
     static void getMyAddresses(std::list<char*>* result);
-    int getMyPort();
   };
 
-  void createLocalTcpListeners(std::list<TcpListener*> *listeners,
+  void createLocalTcpListeners(std::list<SocketListener*> *listeners,
                                int port);
-  void createTcpListeners(std::list<TcpListener*> *listeners,
+  void createTcpListeners(std::list<SocketListener*> *listeners,
                           const char *addr,
                           int port);
-  void createTcpListeners(std::list<TcpListener*> *listeners,
+  void createTcpListeners(std::list<SocketListener*> *listeners,
                           const struct addrinfo *ai);
 
   typedef struct vnc_sockaddr {