Provide a more convenient interface to `Currency` classes

* Move operators from `Currency#Amount` into `CurrencyAmount` trait.
That makes possible to use such operators with the more abstract
type if needed.
* Add convenience `apply()` functions to `Currency` trait to instantiate
amounts in a less verbose way.
* Add a marking trait `FiatCurrency` to deal with fiat currencies.
The Java representation is moved exclusively for instances of this
trait.
* Add a `FiatCurrency.apply()` function to obtain a currency from a
`java.util.Currency` instance.
* Add utility functions to `Currency.Bitcoin` to convert from/to
Satoshi amounts.
Partial replacement of `BtcAmount` and `FiatAmount` by `CurrencyAmount`

In some parts of the codebase, the usage of `BtcAmount` and `FiatAmount`
is replaced by generic class `CurrencyAmount`.
Addressing feedback from PR #151
Merge pull request #151 from apoloval/issue/141

Partial replacement of `BtcAmount` and `FiatAmount` by `CurrencyAmount`