We currently have getMinTrailingZeros(), from which we can get a SCEV's

multiple by computing 1 << MinTrailingZeroes. However, this only gets us

multiples that are a power of 2. This patch introduces a way to get max

constant multiples that are not just a power of 2. The logic is similar

to that of getMinTrailingZeros. getMinTrailingZerosImpl is replaced by

computing the max constant multiple, and counting the number of trailing

bits.

I have so far found this useful in two places:

- Computing unsigned constant ranges. For example, if we have i8 {10,+,10}<nuw>, we know the max constant it can be is 250.

- My original intent was to use this in getSmallConstantTripMultiples, but it has no effect right now due to change from D110587. For example, if we have backedge count
`(6 * %N) - 1`, the trip count becomes`1 + zext((6 * %N) - 1)`, and we cannot say that 6 is a multiple of the SCEV. I plan to look further into this separately.

The implementation assumes the value is unsigned. It can probably be

extended to handle signed values as well.

If the code sees that a SCEV does not have <nuw>, it will fall back to

finding the max multiple that is a power of 2. Multiples that are a

power of 2 will still be a multiple even after the SCEV overflows. This

does not apply to other values.