Correct bitv build failures and a bug in all()

These are the changes I mentioned on rust-lang/rust#19216.
It just struck me that this might be undefined behavior when the mod is zero -- that a full right shift keeps all bits.  It does pass the test, at least on x86_64, but it might need an additional `% u32::BITS` on the shift amount to be safe.  (Optimized code will turn that into a bitand, if anything.)  What do you think?