bitv: Avoid undefined behavior in mask_for_bits

It was relying on the fact that x86 shifts are effectively %BITS, so
shifting a u32 by 32 preserves all bits.  But this is undefined behavior
in general.  Add an explicit %BITS to be safe.
Bah, `-bits` triggers `#[warn(unsigned_negation)]`.  But `(0 - bits) % u32::BITS` is fine.  As I expected, the optimized codegen is identical - do you still care to have this updated?