rust-nodemap: a method for full invalidation

This will be used for exceptional operations,
such as a `__delitem__` on the `MixedIndex` with
Rust nodemap.

In principle, `NodeTree` should also be able to forget
an entry in an efficient way, by accepting to insert
`Element::None` instead of only `Element::Rev(r)`,
but that seems really overkill at this point. We need
to support exceptional operations such as `__delitem__`,
only for completeness of the revlog index as seen from
Python. The Python callers don't seem to even really
need it, deciding to drop the nodemap inconditionnally at
at higher level when calling `hg strip`. Also, `hg strip`
is very costly for reasons that are unrelated to nodemap
aspects.

Differential Revision: https://phab.mercurial-scm.org/D8098
10 jobs for topic/default/rust-nodemap-submit in 60 minutes and 51 seconds (queued for 3 minutes and 18 seconds)
Name Stage Failure
failed
test-py3 Test
Skipped test-sqlitestore.t: missing feature: sqlite3 module is available
Skipped test-verify-repo-operations.py: missing feature: allow slow tests (use --allow-slow-tests)
Skipped test-wireproto-exchangev2-shallow.t: missing feature: sqlite3 module is available
Failed test-lfs-serve-access.t: output changed
Failed test-lfs-serve.t#lfsremote-on: output changed
Failed test-lfs-test-server.t#hg-server: output changed
# Ran 832 tests, 73 skipped, 3 failed.
python hash seed: 835581372
ERROR: Job failed: exit code 1
failed
test-py3-rust Test
Skipped test-sqlitestore.t: missing feature: sqlite3 module is available
Skipped test-verify-repo-operations.py: missing feature: allow slow tests (use --allow-slow-tests)
Skipped test-wireproto-exchangev2-shallow.t: missing feature: sqlite3 module is available
Failed test-lfs-serve-access.t: output changed
Failed test-lfs-serve.t#lfsremote-on: output changed
Failed test-lfs-test-server.t#hg-server: output changed
# Ran 832 tests, 73 skipped, 3 failed.
python hash seed: 357819039
ERROR: Job failed: exit code 1
failed
test-py3-pure Test
Skipped test-verify-repo-operations.py: missing feature: allow slow tests (use --allow-slow-tests)
Skipped test-wireproto-exchangev2-shallow.t: missing feature: sqlite3 module is available
Failed test-lfs-serve-access.t: output changed
Failed test-lfs-serve.t#lfsremote-on: output changed
Failed test-lfs-test-server.t#hg-server: output changed
Failed test-remotefilelog-local.t: output changed
# Ran 828 tests, 77 skipped, 4 failed.
python hash seed: 2081310089
ERROR: Job failed: exit code 1
failed
test-py2 Test
Skipped test-sparse-fsmonitor.t: skipped
Skipped test-sparse-revlog.t: missing artifact, run "/tmp/mercurial-ci/tests/artifacts/scripts/generate-churning-bundle.py"
Skipped test-sqlitestore.t: missing feature: sqlite3 module is available
Skipped test-verify-repo-operations.py: missing feature: allow slow tests (use --allow-slow-tests)
Skipped test-wireproto-exchangev2-shallow.t: missing feature: sqlite3 module is available
Failed test-http-protocol.t: timed out
# Ran 838 tests, 67 skipped, 1 failed.
python hash seed: 3895086306
ERROR: Job failed: exit code 1
failed
checks-py3 Test
Running with gitlab-runner v10.8.0~beta.31.hg-44896a95210f (44896a95210f)
on osuosl-01-docker-x86_64 db47dff5
Using Docker executor with image octobus/ci-mercurial-core ...
Pulling docker image octobus/ci-mercurial-core ...
Using docker image sha256:feb4adcbe10da2da5704983e69875135fd27f1fbf49e1e28a0f0184ed59c4687 for octobus/ci-mercurial-core ...
Running on runner-db47dff5-project-22-concurrent-2 via heptapod-ci-01.bak.milne.osuosl.org...
Cloning hg repository...
requesting all changes
ERROR: Job failed: execution took longer than 1h0m0s seconds