Support for semi-deep state copying

Added support for semi-deep state copying and removed final qualifier on performAction method to enable domains with large numbers of objects to
reduce memory overhead by only doing semi-deep copies of the modified
objects.