Fix ULP computation on non-fundamental types

Types like dry behave as their underlying value type but
don't get processed properly in max_ulps. This new strategy
consists to turn any unknown type into its primitive type
using .value() before computing ULP with fundamental type
formula.