rust-dirstatemap: add `NonNormalEntries` class

This fix introduces the same encapsulation as the `copymap`. There is no easy
way of doing this any better for now.

`hg up -r null && time HGRCPATH= HGMODULEPOLICY=rust+c hg up tip` on Mozilla
Central, (not super recent, but it doesn't matter):

Before: 7:44,08 total
After: 1:03,23 total

Pretty brutal regression!

This is a graft on stable of cf1f8660e568
11 jobs for topic/stable/update-regression in 68 minutes and 44 seconds (queued for 2 minutes and 32 seconds)