A marshaller is a class that is able to marshall and unmarshall objects efficiently.
This interface is used to marshall {@link org.infinispan.commands.ReplicableCommand}s, their parameters and their response values, as well as any other arbitraty Object <--> byte[] conversions, such as those used in client/server communications.
The interface is also used by the {@link org.infinispan.loaders.CacheStore} framework to efficiently serialize datato be persisted, as well as the {@link org.infinispan.statetransfer.StateTransferManager} when serializing the cachefor transferring state en-masse.
A single instance of any implementation is shared by multiple threads, so implementations
need to be threadsafe, and preferably immutable.
@author Manik Surtani
@version 4.1