Make arguments explicit in all message writer methods

Make sure all methods only write what is given as arguments, and
avoid side effects by getting data from parameter objects. This keeps
things readable in the calling code.
diff --git a/common/rfb/SMsgWriter.cxx b/common/rfb/SMsgWriter.cxx
index f4c968e..766b0cb 100644
--- a/common/rfb/SMsgWriter.cxx
+++ b/common/rfb/SMsgWriter.cxx
@@ -47,12 +47,13 @@
 {
 }
 
-void SMsgWriter::writeServerInit()
+void SMsgWriter::writeServerInit(rdr::U16 width, rdr::U16 height,
+                                 const PixelFormat& pf, const char* name)
 {
-  os->writeU16(client->width());
-  os->writeU16(client->height());
-  client->pf().write(os);
-  os->writeString(client->name());
+  os->writeU16(width);
+  os->writeU16(height);
+  pf.write(os);
+  os->writeString(name);
   endMsg();
 }