Small improvements for idiomatic use of shift and bitwise and (&) operators.

Make Simplify treat bitwise and as Mod if the and is with a constant
of form (2^n -1).

Make bounds reasoning handle shifts and bitwise_and the same way
Simplify does.

Small performance improvement to is_const_power_of_two.
Yeah, I was thinking unsigned. I'll come up with something else.