Replace non-standard __builtin_ffsl from strings.h with cross-platform std::countr_zero
- this allows compilation with msvc on windows (which doesn't have strings.h)
__builtin_ffsl from strings.h with cross-platform std::countr_zero