C++ server code

Latest master merged in. We should discuss the layout of the code.
That's a convention I use. It's similar to Hungarian notation, but without all the extra information. The only information I encode into a variable name is whether the variable is an argument, a pointer, or a member variable.

- aVariable : Argument to function
- pVariable: Pointer variable
- mVariable: Member variable
- mpVariable: Member pointer variable
- apVariable: Argument pointer variable