Creates a deep copy of this serializer if it is necessary, i.e. if it is stateful. This
can return itself if the serializer is not stateful.
We need this because Serializers might be used in several threads. Stateless serializers
are inherently thread-safe while stateful serializers might not be thread-safe.
Copies exactly one record from the source input view to the target output view. Whether this operation
works on binary data or partially de-serializes the record to determine its length (such as for records
of variable length) is up to the implementer. Binary copies are typically faster. A copy of a record containing
two integer numbers (8 bytes total) is most efficiently implemented as