C++ server code

Latest master merged in. We should discuss the layout of the code.
Not sure how we should resolve changes, so ill make a checklist on the main PR for people to edit and check off for when its done so we can keep track, especially for when there are as many files as we have :smile: