update slicing to support dynamic contracts
Currently, slicing might remove variables that are considered useless for the goal alone, even though a dynamic contract uses it. Variables used in dynamic contracts should be considered useful, if they can be changed by useful actions.