Conventions and cleanup for Bitv and BitvSet

Part of #18424

This commit changes the semantics of `reserve` and `capacity` for Bitv and BitvSet to match conventions. It also introduces the notion of `reserve_index` and `reserve_index_exact` for collections with maximum-index-based capacity semantics.

Deprecates free function constructors in favour of functions on Bitv itself.

Changes `Bitv::pop` to return an Option rather than panicking.

Deprecates and renames several methods in favour of conventions.

Marks several blessed methods as unstable.

This commit also substantially refactors Bitv and BitvSet's implementations. The new implementation is simpler, cleaner, better documented, and more robust against overflows. It also reduces coupling between Bitv and BitvSet. Tests have been seperated into seperate submodules.

Fixes #16958

[breaking-change]
No strong feelings. Something to be hashed out in collects part-2 I reckon. `up_to` has a bit of inclusive/exclusive ambiguity in it, though. Note that the semantics here are a bit tricky. reserve_index is very similar to the old `reserve`, but it's off-by-one because it's length-vs-index. I went with index because that made sense to me at the time, but it's very debatable.