'Move states from one stash to another.
:param from_stash:  Take matching states from this stash.
:param to_stash:    Put matching states into this stash.
:param filter_func: Stash states that match this filter. Should be a function that takes a state and returns
True or False. Default: stash all states
:returns:           The resulting SimulationManager.
:rtype:             SimulationManager'

def move(self, from_stash, to_stash, filter_func=None):

    new_stashes = self._copy_stashes()
    self._move(new_stashes, filter_func, from_stash, to_stash)
    return self._successor(new_stashes)
