Provide a type-safe replacement for `BtcAmount` and `FiatAmount`

As reported in issue #141, class `FiatAmount` is not as robust as it
could be. The instances of different currencies share the same class,
what requires continuous checks to verify we are not mixing different
currencies inappropriately.

This change proposes a new replacement for `FiatAmount` and `BtcAmount`
which uses a type-safe mechanism that makes impossible to mix amounts
of different currencies.
Merge pull request #144 from apoloval/issue/141

Provide a type-safe replacement for `BtcAmount` and `FiatAmount`