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

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.

In some parts of the codebase, the usage of `BtcAmount` and `FiatAmount` is replaced by generic class `CurrencyAmount`.

Horror! Why do you remove the `currency.Implicits._`. This is way more tedious to read. Can you update them to use `Currency.Bitcoin.foo.bar` when you write `200.BTC`?