Add versioning field serializer

A version based serializer with backward compatibility (no forward compatibility).

This can be used for scenarios like:

* Already used FieldSerializer to serialize persisted object, but about to add field(s)
* Need light-weighted and simple backward compatible serializer with little overhead, since forward compatibility are not always necessary

What is the magic number for? It is always written so will always be read. I guess it is for serializing with FieldSerializer, then reading those bytes with VersioningFieldSerializer? That won't necessarily work, since the bytes from FieldSerializer could start with the magic number. I think it's best to leave out the magic bytes, as it is standard to expect the serializer that wrote the bytes will be used to read them.