GCC intrinsics are not available on all compilers, so this converts the usage of __builtin_ffs() to a portable equivalent.
This also seemingly fixes a bug in this code, as __builtin_ffs returns the 1-based index of least-significant 1-bit, but Section::Section() expects the log_2 alignment, which is the 0-based index of the least-significant 1-bit.