Move preferred encoding tracking into a server object

Having it in ConnParams made the linker pull all the encoder objects
into vncviewer, making it larger than necessary and giving it extra
parameters in its help output that weren't relevant.
diff --git a/common/rfb/SConnection.cxx b/common/rfb/SConnection.cxx
index 48acf0a..eeaeafe 100644
--- a/common/rfb/SConnection.cxx
+++ b/common/rfb/SConnection.cxx
@@ -26,6 +26,8 @@
 #include <rfb/SMsgWriter.h>
 #include <rfb/SConnection.h>
 #include <rfb/ServerCore.h>
+#include <rfb/encodings.h>
+#include <rfb/EncodeManager.h>
 
 #include <rfb/LogWriter.h>
 
@@ -47,7 +49,8 @@
   : readyForSetColourMapEntries(false),
     is(0), os(0), reader_(0), writer_(0),
     security(0), ssecurity(0), state_(RFBSTATE_UNINITIALISED),
-    reverseConnection(reverseConnection_)
+    reverseConnection(reverseConnection_),
+    preferredEncoding(encodingRaw)
 {
   defaultMajorVersion = 3;
   defaultMinorVersion = 8;
@@ -264,6 +267,21 @@
   os->flush();
 }
 
+void SConnection::setEncodings(int nEncodings, rdr::S32* encodings)
+{
+  int i;
+
+  preferredEncoding = encodingRaw;
+  for (i = 0;i < nEncodings;i++) {
+    if (EncodeManager::supported(encodings[i])) {
+      preferredEncoding = encodings[i];
+      break;
+    }
+  }
+
+  SMsgHandler::setEncodings(nEncodings, encodings);
+}
+
 void SConnection::versionReceived()
 {
 }