Fix problem with write limits

I'm currently having an overloaded server running Collectd.
PR #280 (merged in collectd-5.4.0) is working well except in some strange cases. This PR fixes the problems with comparisons on `long` instead of `double` and removing all equality checks on `double`.


Yes for this one. But no on `if (p == 0.0)` just after the call to `get_drop_probability ()`.

There are more than one way to code a 0.0 float (positive, negative, nul value with any exponent...) so in C, the test (p == 0.0) may return false even when p is nul.

I see 3 ways to solve this problem : 
1/ switch to integer values where (p == 0) is always true when p is  nul. This was the easier/cleaner way I found to do it. Note that when p == 0, we work only with integers and do not spend time on float operations.

2/ keep the code as is. Easier to do, but when p is nul but (p == 0.0) is false, you will go on with the lock and then calculating the result of `0.0 * cdrand_d()`, which is useless (and time consuming, very bad in an over-loaded computer).

3/ update `get_drop_probability ()` to return 2 values (either with a struct or by passing an argument by reference). One value would be the current value, unmodified. The other one would be a boolean that would say "false/drop probability is nul, do not lose time with the lock and the rest" or "true/drop probability is not nul, get the lock and compute if we should drop the value". Probably better (no conversion from integer to double), but it looks like using a sledgehammer to crack a nut.

This is only my humble opinion.