MAID-390-cereal_integration_common

Replacing protobuf with cereal in common and adding global helper functions to serialize.
We only use angle brackets for including system headers, and we generally include system headers before 3rd party ones.  (I quite like alphabetical order too, but that's not an official style thing!)  So this block should be:

```
#include <string>

#include "cereal/archives/binary.hpp"
#include "cereal/types/boost_optional.hpp"
#include "cereal/types/map.hpp"
#include "cereal/types/string.hpp"
#include "cereal/types/vector.hpp"
```