enhancementhelp wanted
Description
Currently, the package isn't very arbitrary-precision-friendly, because conversion constants are often of Float64 type. My idea is to define them as Irrational:
julia> using Unitful
julia> Base.@irrational μ 1.256637061435917295385e-06 (4 * big(π) * (1//10) ^ 7)
julia> μ0 = μ * Unitful.H / Unitful.m
μ = 1.2566370614359... H m^-1
julia> float(μ)
1.2566370614359173e-6
julia> float(Unitful.μ0.val)
1.2566370614359173e-6
julia> big(μ)
1.256637061435917295385057353311801153678867759750042328389977836923126562514468e-06
julia> big(float(μ))
1.256637061435917288506887261323452520400678622536361217498779296875000000000000e-06
julia> big(Unitful.μ0.val)
1.256637061435917288506887261323452520400678622536361217498779296875000000000000e-06
The last three lines show that in this way the conversion factor has full precision as a BigFloat.
Edit: I initially proposed to define a type that was a simplification of Irrational, but in the end there wasn't much difference between my custom type and Irrational.