simplify dynamic_bitset::find_next()

Instead of masking all bits in the current block that were already
visited and then finding the lowest remaining bit, it shifts the current
block directly to the first unvisited bit and identifies the lowest
set bit.
It requires fewer operations that the original implementation and should
be faster.

See https://svn.boost.org/trac/boost/ticket/5159.
use __builtin_ctz() to speed-up lowest_bit()

__builtin_ctz[l][l]() is built-in gcc/icc/clang operation to find
the lowest bit, _BitScanForward[64]() is MSVC builtin one.
It replaces the default arithmetic-based lowest_bit() implementation
for the types that support this operation.

The patch should improve the efficiency of dynamic_bitset<>
traversing. See https://svn.boost.org/trac/boost/ticket/5158.

Multiplatform support uses bits&pieces from
boost/multiprecision/detail/bitscan.hpp.
hash_value() for dynamic_bitset