Issue #16 Money Value Object for related entities

Entities having "price" attributes were refactored so that a Money value
object can be used for currency arithmetics (add, subtract, multiply by
factor operations).

A price is a Money value object, and is defined by an integer amount and
a Currency. Consequently, any entity that works with Money now has a
Currency, let alone the money amount (that now is an *integer* value)

Entities using Money will *need* to be factored with a consistent
Currency object, and their factory classes were changed accordingly.