Define cork() as pure virtual in Socket class

This makes it possible to create a derived class from Socket which is
not TCP based, without having VNCSConnectionST.cxx trying to call
setsockopt() on a non-socket.
diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx
index d9bb281..2f8889d 100644
--- a/common/rfb/VNCSConnectionST.cxx
+++ b/common/rfb/VNCSConnectionST.cxx
@@ -168,7 +168,7 @@
 
     // Get the underlying TCP layer to build large packets if we send
     // multiple small responses.
-    network::TcpSocket::cork(sock->getFd(), true);
+    sock->cork(true);
 
     while (getInStream()->checkNoWait(1)) {
       if (pendingSyncFence) {
@@ -185,7 +185,7 @@
     }
 
     // Flush out everything in case we go idle after this.
-    network::TcpSocket::cork(sock->getFd(), false);
+    sock->cork(false);
 
     inProcessMessages = false;
 
@@ -1093,7 +1093,7 @@
   // mode, we will also have small fence messages around the update. We
   // need to aggregate these in order to not clog up TCP's congestion
   // window.
-  network::TcpSocket::cork(sock->getFd(), true);
+  sock->cork(true);
 
   // First take care of any updates that cannot contain framebuffer data
   // changes.
@@ -1102,7 +1102,7 @@
   // Then real data (if possible)
   writeDataUpdate();
 
-  network::TcpSocket::cork(sock->getFd(), false);
+  sock->cork(false);
 }
 
 void VNCSConnectionST::writeNoDataUpdate()