[IMP] mail: parsing emails with several html parts

If an email contains several text/html parts inside a multipart email, the previous code was only keeping the last content part.
The Content-Type: multipart/mixed allows several independent part (RFC1341 7.2.2), so two html is technically valid.
With this patch, the two parts are concatenated. (opw 614755)

Modify append_content_to_html regex to make sure the regex keeps the content of the html instead of removing it.
e.g.: "123 <html> 456 </html> 789" used to be stripped to "123  789" while we expect "123 456 789"
[VERT] 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

FYI vert is a revert of a revert
[FIX] product: precision of uom

Remove the hardcoded precision of 12 on factor and factor_inv to avoid rounding errors.

e.g. a unit with a factor_inv of 6.0 used to be computed as:
factor_inv: 6.0 -> factor: 0.166666666667 (1.0/6.0, rounded to 12 digits) -> factor_inv: 5.999999999988 (1.0/factor)
which could lead to errors such 12*0.166666666667 = 2.000000000004 instead of 2.0

Added the option display_digits on float fields in views, to overwrite default value of [69,2].
[FIX] product: view of product.uom

Add readonly attribute to avoid sending both factor and factor_inv value.
This was possible if the user switches between uom_type to fill the two fields.