Fixed issue with Math\Rand::getInteger() on ranges close to PHP_INT_MAX

When min - max range is close or equal to `PHP_INT_MAX`  `log()` produces number of bits
equal to machine size integer. So `$filter = (int) ((1 << $bits) - 1);` evaluates to zero.
In this case `getInteger(0, PHP_INT_MAX)` returns only zeros.

PR includes correct bit calculation and test