C++ server code

Latest master merged in. We should discuss the layout of the code.
No. Looking at the implementation (this is C code, really, I can make it nicer with C++), aGroupName and aName are pointers to a string buffer that has already been allocated, and groupLength (I forgot to add my 'a' convention to that variable) and aNameLength specify the length the those allocated buffers. This information is needed to copy the raw memory containing the group and field names into the buffer, and also prevent buffer overflows.