Fix BitvSet union_with and symmetric_difference_with giving incorrect results when the BitvSet passed in is larger than self.
Standardize Bitv and BitvSet's handling of uninitialized bits (they will be 0), and clean up modifying nbits and converting
from a Bitv to a BitvSet.
auto merge of #17558 : kaseyc/rust/fix_bitvset_union, r=aturon

Updates the other_op function shared by the union/intersect/difference/symmetric_difference -with functions to fix an issue where certain elements would not be present in the result. To fix this, when other op is called, we resize self's nbits to account for any new elements that may be added to the set.

Example:
```rust
	let mut a = BitvSet::new();
	let mut b = BitvSet::new();
	a.insert(0);
	b.insert(5);
	a.union_with(&b);
	println!("{}", a); //Prints "{0}" instead of "{0, 5}"
```