Updated to support functional-style interfaces by removing the requirement for them being CloneableSerializable. This makes them easier to use under Java 8. The impact of the interface changes are that some clone methods are changed from cloneSafe to call cloneSmart instead.