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.
I haven't seen the idiom (ib + 1) > ib. Is it checking for overflow? I thought signed int overflow was undefined in C, so the compiler is free to elide this comparison.