unit test for the whole serialization process

Interface Input DataInput anf DataOutput need to be revised, but I left them unchanged
we can support 2 kinds of serialize/deserialize.
1. write class info and field data in DataOutput, and read class info and filed data from DataInput.
2. only write field data in DataOutput, and read class info from picklepot, read field data from DataInput.
The first one may be used while transfer DataOuput across processes, and the second one may be used while ser/deser in same JVM.