Deal with different precisions in 1w temperatures

DS1822 and DS18B20 provide an additional decimal digit of precision,
which used to be discarded. This change introduces a ow_temp_t type to
store the number of decimal digits at no additional memory usage.
Did you check if
return (temp.digits == 2 ? temp.val / 10 : temp.val);
produces smaller code?