Reform is_power_of_two() to return false for self == 0, and move previous functionality to is_power_of_two_or_zero()

The `is_power_of_two()` method of the `UnsignedInt` trait currently returns `true` for `self == 0`. Zero is not a power of two, assuming an integral exponent `k >= 0`. I've therefore moved this functionality to the new method `is_power_of_two_or_zero()` and reformed `is_power_of_two()` to return false for `self == 0`.

To illustrate the usefulness of the existence of both functions, consider `HashMap`. Its capacity must be zero or a power of two; conversely, it also requires a (non-zero) power of two for key and val alignment.

Also, added a small amount of documentation regarding #18604.
Since this is fairly impl sensitive, I'm not sure if we want to specify this. Leaving it specified-as-unspecified seems like the right choice right now. It's backwards compatible to make it specified later, too.