FormatMoney: make right-trimming zeros optional, on by default

Currently the FormatMoney function always trims trailing zeros apart
from two if possible.
Add an option to avoid this trimming and always return a string with 8
decimals.
Move AmountFromValue and ValueFromAmount to rpcprotocol

Converting monetary amounts is part of the RPC protocol,
both the client and server need to share the same implementation.
Use ValueFromAmount in RPC client

No longer use doubles. This allows supporting alternative RPC
representations of monetary values.
Add option `-rpcamount` to set format for monetary amounts in RPC

Support this option at both the client side and server side. Both sides need
to be using the same value of this option, otherwise parse errors
will ensue.

Four modes are available:

- number-decimal: Format as number in decimal BTC (default)
- number-satoshis: Format as number in satoshis
- string-decimal: Format as string in decimal BTC
- string-satoshis: Format as string in satoshis

Also add tests for AmountFromValue / ValueFromAmount for all four modes.