fix(product): refactor base price handling

Previously the `product` model had a
method `getBasePriceInfo()` which returned
a full string which bypassed the localization.

This was replaced by the following low level
methods:

`hasBasePrice()`
`getBasePrice()`
`hasUnit()`
`getUnit()`