PLT-362 - Currency and Money classes

Add classes for Currency, CurrencyAmount, MultiCurrencyAmount, CurrencyPair, FxRate.

This is an initial commit to setup a reasonable initial set of currency/money classes. More will probably be added later. `Currency` changes some method names from v2.x and adds more constants. `CurrencyPair`, `CurrencyAmount` and `MultiCurrencyAmount` are updated from existing classes. `FxRate` is new and holds a pair and rate.
If we use such a simple example there is a danger we encourage usage for this rather than multiply (in this instance). Is that what we want? If not, maybe add a note and a more complex example.