Java serialization for ByteString

Java serialization now completely separated from any default
serialization implementation. Also, a test for serialization.
Move serialVersionUID to the class actually serialized
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
Merge pull request #27 from fizbin/master

ByteString should be java.io.Serializable