[VERT] base: float rounding and ceiling

Commit d4972ff was reverted at 333852e due to remaining issue with negative values.

In float_round, the epsilon was applied with
   normalized_value -= cmp(normalized_value,0) * epsilon
which would transform -6.0 into -5.99999, which becomes -5.0 after math.ceil()
For UP rounding method, unlike HALF-UP, the epislon should always be substracted whatever the sign of normalized value.
Added test to make sure that -6.0 stays -6.0.

The python math.ceil use "torwards infinity" rounding method while we want the "away from zero" method.
Uses the absolute value of normalized_value to make sure than -1.8 is rounded to -2.0 and not -1.

Fixes #1125 #2793

FYI vert is a revert of a revert