Implement serialise and test round-tripping

The type system led me to put the will properties in a record so they
could be all-or-nothing.