Convert price to double or approriate according to the given ratio

This is to avoid compilation error with the next commit
Check at compile time precision loss with prices

It prevents implicit unsafe cast but allow implicit safe ones.
It offers exactly the same behavior as before the currency
generalization pathes but it only add static_assert to check if the
developer is not doing unsage operations