Begin working on the C++ client library. Change over to using std::shared_ptr wherever possible