Support effective cloning
Especially for the state package we should implement effective cloning (see e.g. https://adtmag.com/Articles/2000/01/18/Effective-JavaEffective-cloning.aspx) for all objects. At the moment we support cloning due to copy constructors or combining serialization and deserialization (json) which is not effective. We should use the clone() method of the Object-class by implementing Cloneable. The method copy's the memory which is faster, the only drawback is that one has to do a typecast since clone() returns Object. However this is the correct way to do it!
Note that implementing this feature is a deep change!