Fix BitvSet union_with and symmetric_difference_with

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}"
```
I found that you actually do need to mask out the current word, as there are some cases where there can be partially initialized words. For example, the [with_capacity](https://github.com/kaseyc/rust/blob/fix_bitvset_union/src/libcollections/bitv.rs#L237) can return a Bitv with uninitialized bits set to one.

Removing the masking of the current word causes [this test case](https://github.com/kaseyc/rust/blob/fix_bitvset_union/src/libcollections/bitv.rs#L2128) to fail, as the insert will increase the nbits, and all the elements less than nbits (say if we inserted 160 instead) would appear to be inserted.