Adds Currencies implementation

Regarding the subunit question: this makes it possible to create custom currency repositories (Currencies instead of CurrencyRepository). It is up to the user how it is filled up.

This makes it possible to create a repository where the subunit is available. However for the default repository a list of currencies is still needed and #48 complains about it.

I would also fill up the current currency list with the list of subunits, and any other relevant data. It is a godd base to work with, but these metadatas are not tied to the `Currency` Value Object.
To me this generic class has no value. It saves typing a few characters, but it loses in expressiveness. Think DDD, explicit naming and contracts! ISOCurrencies, CryptoCurrencies, MyProjectAcceptedCurrencies ...