qt: use SendCoinsRecipient for payment request information

This brings some symmetry into the design by using the same object
both for incoming URIs that are parsed as for outgoing URIs that
are formatted.

Conflicts:
	src/qt/receiverequestdialog.cpp
qt: move bitcoin URI formatting to guiutil

Follow the same pattern as the parseBitcoinURI function.

Conflicts:
	src/qt/receiverequestdialog.cpp
qt: show payment information in one text area

Simplifies the dialog (makes it look less crowded) as well
as the code and makes it possible to copy multiple fields at once.
Also format bitcoin URI as URI, add copy button for URI.
Add test for monetary value formatting

Tests for issue #3126.
This problem pops up after upgrading json-spirit.
Add test for monetary value parsing

Just-in-case sanity test for JSON spirit and AmountFromValue.
Also update rpc_format_monetary_values test to use ValueFromAmount,
so that ValueFromAmount is also tested.
bitcoingui: show main window (if hidden) on modal messages

Conflicts:
	src/qt/bitcoingui.cpp
RPC: error code changes and prevent crash with walletpassphrase

- fix crash with walletpassphrase by checking if RPC server is running and
  give a friendly error message how to fix this (fixes #3100)
- add 3 new RPCErrorCodes RPC_SERVER_NOT_STARTED, RPC_NODE_ALREADY_ADDED
  and RCP_NODE_NOT_ADDED (I checked the source to not use a number already
  in use for RPC_SERVER_NOT_STARTED)
- use the new codes where needed / missing
- add missing use of RPC_INVALID_PARAMETER
[Qt]: fix num Blocks to maturity in Tx description

- as we have main.h included in transactiondesc.cpp, we now also use
  COINBASE_MATURITY +  1 for the descriptive string
- fixes #3131

Conflicts:
	src/qt/transactiondesc.cpp
Relay OP_RETURN TxOut as standard transaction type

Also fix decoderawtransaction to not show reqSigs or addresses for
nulldata txouts. (Previous version also left reqSigs uninitialized
mistakenly)
Show short scriptPubKeys correctly

Previously bitcoin-qt's -debug transaction info was showing CTxOut([error])

It is valid for a scriptPubKey to be any size, for example simply
OP_RETURN is valid and can be used to destroy a TXOUT to mining fees.
Qt: move paymentACK handling to paymentserver

- add new slot handlePaymentACK() to paymentserver, which handles
  paymentACK messages (currently we just display them)
- make paymentACK message a modal information dialog
- change some QObject::tr() to just tr()
- clarify the processPaymentRequest() error, when IsDust()
- small string change to prevent a tripple + usage with QString

Conflicts:
	src/qt/paymentserver.cpp
paymentserver: init all class members in constructor
qt: general polish after adding new receive flow

- We no longer have an address book, but "address lists", update message
  accordingly
- Add tooltips here and there
- Clarify text on buttons
- add Copy Address button to receive request dialog
allow emit message() in sendcoinsdialog and walletview

- this allows us to use emit message() over MessageBox:: or gui->message()
  calls in sendcoinsdialog and walletview
- move main handlePaymentRequest() functionality back to BitcoinGUI
- move a showNormalIfMinimized() before gotoSendCoinsPage()

Conflicts:
	src/qt/sendcoinsdialog.h
[Qt] misc small fixes for #3099 (new receive flow)

- changes some strings that were forgotton or made no sense in the conext
  they are used
- remove an orphan file from the qt project file
- revert a small change in signverifymessagedialog.ui
- guard #include "bitcoin-config.h" with #if defined(HAVE_CONFIG_H)
- remove windowTitle from addressbookpage.ui
[Qt] additional small fix for #3099 (new receive flow)

- remove an obsolete connection to a signMessage() signal
qt: ReceiveCoinsDialog and SendCoinsDialog should not take a gui object

They're supposed to be children of the walletview, and are added with
addWidget later on.
Inconsequential change because the object passed was already 0.
Send multiple inv messages if mempool.size > MAX_INV_SZ

Changes the response to the 'mempool' command so that if
the memory pool has more than MAX_INV_SZ transactions (50,000)
it will respond with multiple 'inv' messages.
Give peer time-adjustment data an own lock

Instead of relying on cs_main (defined in a different module) to
prevent concurrent access to it.