starting one-way trip

Added tests for the current json serialization.
The purpose of the one-way trip is to persist the output into files, so we can verify that we can deserialize them back to protocol case classes as we change the serialization format and/or the case class.

/cc @jsuereth 

if `(lhs.isDefined != rhs.isDefined)` returned `false`, then `lhs.isDefined == rhs.isDefined` right?