Java serializer like ObjectOutputStream, but handles Class version change transparently