uncommit: move _movedirstate() to scmutil for reuse

Authored by martinvonz.

Description

uncommit: move _movedirstate() to scmutil for reuse

The function should be applicable generically when moving from one
commit to another. I'll try to add more callers when I find time.

I'm not convinced it's handling all the cases correctly, but we should
have a generic function for this kind of operation, so I think it
belongs somewhere in core (not in the uncommit extension).

Differential Revision: https://phab.mercurial-scm.org/D6119