Redesign of the server communication protocol to allow arbitrary sized
data to be exchanged.
Split request and reply structures to make backwards compatibility
easier.
Moved many console functions to dlls/kernel, added code page support,
changed a few requests to behave properly with the new protocol.

diff --git a/server/semaphore.c b/server/semaphore.c
index 4844414..022fc73 100644
--- a/server/semaphore.c
+++ b/server/semaphore.c
@@ -123,11 +123,11 @@
 {
     struct semaphore *sem;
 
-    req->handle = 0;
-    if ((sem = create_semaphore( get_req_data(req), get_req_data_size(req),
+    reply->handle = 0;
+    if ((sem = create_semaphore( get_req_data(), get_req_data_size(),
                                  req->initial, req->max )))
     {
-        req->handle = alloc_handle( current->process, sem, SEMAPHORE_ALL_ACCESS, req->inherit );
+        reply->handle = alloc_handle( current->process, sem, SEMAPHORE_ALL_ACCESS, req->inherit );
         release_object( sem );
     }
 }
@@ -135,12 +135,12 @@
 /* open a handle to a semaphore */
 DECL_HANDLER(open_semaphore)
 {
-    req->handle = open_object( get_req_data(req), get_req_data_size(req),
-                               &semaphore_ops, req->access, req->inherit );
+    reply->handle = open_object( get_req_data(), get_req_data_size(),
+                                 &semaphore_ops, req->access, req->inherit );
 }
 
 /* release a semaphore */
 DECL_HANDLER(release_semaphore)
 {
-    req->prev_count = release_semaphore( req->handle, req->count );
+    reply->prev_count = release_semaphore( req->handle, req->count );
 }