Make next_power_of_two generic for unsigned integers

Also rename `next_power_of_two_opt` to `checked_next_power_of_two`.
Remove some unused imports
Remove free-standing div functions in std::uint
Move int and uint overflow tests into macros