Polish Serialization implementation as per Effective Java, 2nd ed.

Specifically, add @serailData javadoc, call the SerializedForm class a
SeprializationProxy, and add a defensive readObject() method