perform State Update
open suspend override fun performStateUpdate(previousState: Optional<T>, actualState: T, scope: CoroutineScope)
Realization of this update will use the Job of previousState in statesJobs and jobsStates if previousState is Optional.presented and shouldReplaceJob has returned true for previousState and actualState. In other words, Job of previousState WILL NOT be replaced with the new one if they are "equal". Equality of states is solved in shouldReplaceJob and can be rewritten in subclasses