MAID-390-cereal_integration_common

Replacing protobuf with cereal in common and adding global helper functions to serialize.
I think the script has found that version_cereal.h actually uses `std::string` (line 44), but I noticed that this class doesn't, so we don't really need to include it.

I think the script is basically trying to make each compilation unit self contained in terms of its includes.  So if we rely on including boost/optional.hpp to also bring <string> into scope then refactor to not use boost optional, we need to go back and include <string>.  It's not a big deal, and unfortunately the script doesn't do the (more useful?) check for extraneous includes.