C++ server code

Latest master merged in. We should discuss the layout of the code.
It's empty because C++, haha. In its declaration I declared the destructor to be abstract (in base.hpp the destructor should be followed by `= 0`). The problem is, by the C++ standard, all constructors must be defined.

In English, making the destructor abstract makes the class abstract, which prevents instantiation directly, but C++ demands a destructor still be defined. Since I don't need the constructor to do anything interesting, I just declared it empty.