base: float rounding and ceiling

cherry-pick of d4972ff which was reverted at 333852e due to remaining issue with negative values.

Adding rounding_method parameter on float_round method to offer HALF-UP (default, usual round) or UP (ceiling) rounding method.
Use the second method instead of math.ceil() for product reservation.

For UP, the python math.ceil() method uses "torwards infinity" rounding method while we want "away from zero".
Uses the absolute value of normalized_value to make sure than -1.8 is rounded to -2.0 and not -1.

Fixes #1125 #2793