<1> adding return statement to cereal functions because every evaluation of return type as non-void will require an explicit mention of "return <non-void-type", otherwise will be caught as compile error by our build system.
<2> putting a file for boost_optional support from https://github.com/stevehickman/cereal/blob/master/include/cereal/types/boost_optional.hpp